2014-10-04T00:00:59Z InvalidCo: this seems to be just what I wanted 2014-10-04T00:02:39Z MouldyOldBones quit (Quit: MouldyOldBones) 2014-10-04T00:05:14Z hiyosi joined #lisp 2014-10-04T00:07:24Z Bicyclidine quit (Ping timeout: 260 seconds) 2014-10-04T00:10:04Z hiyosi quit (Ping timeout: 250 seconds) 2014-10-04T00:14:37Z nand1 quit (Remote host closed the connection) 2014-10-04T00:15:42Z Mon_Ouie quit (Ping timeout: 250 seconds) 2014-10-04T00:16:09Z wizzo quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-10-04T00:16:10Z devon quit (Remote host closed the connection) 2014-10-04T00:17:23Z nand1 joined #lisp 2014-10-04T00:18:10Z knosys quit (Quit: WeeChat 0.4.2) 2014-10-04T00:20:52Z freaksken quit (Ping timeout: 240 seconds) 2014-10-04T00:22:11Z Adlai: ... people remember sheeple? :D 2014-10-04T00:22:50Z Adlai wondered a while back about how it could be done through the MOP 2014-10-04T00:23:50Z knosys joined #lisp 2014-10-04T00:25:18Z Fare: Adlai: the SSL certificate is expired :-/ 2014-10-04T00:25:34Z boogie quit (Remote host closed the connection) 2014-10-04T00:26:04Z Fare: I was considering using sheeple for xcvb, but then I became asdf maintainer 2014-10-04T00:27:05Z kobain quit (Ping timeout: 260 seconds) 2014-10-04T00:27:20Z Mon_Ouie joined #lisp 2014-10-04T00:27:46Z SvenGek quit (Quit: Leaving) 2014-10-04T00:30:49Z hiyosi joined #lisp 2014-10-04T00:32:12Z rpg_: InvalidCo: There's also Garnet, which I have worked with extensively. Alas, it probably needs a fair amount of work to run in a modern lisp. But it had a prototype-based object system and had a LOT of person-hours in it. 2014-10-04T00:34:27Z rpg_ quit (Quit: rpg_) 2014-10-04T00:38:08Z kanru` joined #lisp 2014-10-04T00:38:32Z Hydan quit (Ping timeout: 245 seconds) 2014-10-04T00:39:43Z kobain joined #lisp 2014-10-04T00:40:11Z Hydan joined #lisp 2014-10-04T00:41:01Z kobain quit (Max SendQ exceeded) 2014-10-04T00:41:15Z madmalik quit (Quit: Connection closed for inactivity) 2014-10-04T00:41:18Z kobain joined #lisp 2014-10-04T00:42:55Z ltbarcly joined #lisp 2014-10-04T00:44:37Z ltbarcly quit (Client Quit) 2014-10-04T00:46:54Z bgs100 joined #lisp 2014-10-04T00:49:15Z paul0 joined #lisp 2014-10-04T00:51:43Z Jesin joined #lisp 2014-10-04T01:02:26Z InvalidCo: hmm 2014-10-04T01:02:40Z InvalidCo: it seems that sheeple doesn't work with concurrency 2014-10-04T01:02:41Z InvalidCo: damn it 2014-10-04T01:05:11Z nonamae joined #lisp 2014-10-04T01:16:33Z InvalidCo: no, wait, 2014-10-04T01:16:34Z InvalidCo: my mistake 2014-10-04T01:16:36Z InvalidCo: it does work 2014-10-04T01:16:43Z PuercoPop: Adlai: yeah, it was recently used by mmontone for a library 2014-10-04T01:16:56Z Tristam quit (Ping timeout: 260 seconds) 2014-10-04T01:17:12Z Adlai: Fare: which certificate? 2014-10-04T01:17:19Z Adlai: PuercoPop: which library? 2014-10-04T01:17:50Z InvalidCo: Adlai: I think he's talking about sykosomatic.org 2014-10-04T01:18:44Z PuercoPop: no 2014-10-04T01:18:46Z PuercoPop: descripts 2014-10-04T01:18:53Z InvalidCo: at least my end says the cert has expired 2014-10-04T01:19:03Z PuercoPop: https://github.com/mmontone/descriptions 2014-10-04T01:19:36Z White_Flame: Are bidirectional streams generally safe to read from one thread & write from another? 2014-10-04T01:21:18Z Trystam joined #lisp 2014-10-04T01:22:19Z Fare: possibly depends on the implementation 2014-10-04T01:22:25Z InvalidCo: White_Flame: I don't see why not...the only exception would be, of course, files 2014-10-04T01:23:28Z Fare: for interactive development, I'd assume yes 2014-10-04T01:23:41Z Fare: for production deployment, I'd check my implementation's documentatoin 2014-10-04T01:24:12Z InvalidCo: well put 2014-10-04T01:24:28Z White_Flame: SBCL and CCL seem to be our targets, though CCL might drop off if SBCL on Windows doesn't hit any quirks 2014-10-04T01:25:31Z JuanitoJons joined #lisp 2014-10-04T01:26:43Z Fare: we've had lots of threading issues with QRes. The biggest one was a kernel bug made visible by a CCL optimization (and happily so, otherwise the same kernel bug would have caused silent corruption). 2014-10-04T01:26:53Z Trystam quit (Max SendQ exceeded) 2014-10-04T01:27:40Z White_Flame: QRes? 2014-10-04T01:27:52Z Fare: CCL would crash because the kernel wasn't always preserving some MMX registers, that CCL was using as an extra scratch space to store pointers. 2014-10-04T01:28:09Z dim: QRes is ITA software, now Google Flights, IIUC 2014-10-04T01:28:14Z White_Flame: ah, so that's not related to streaming in particular 2014-10-04T01:28:19Z Fare: nope. QPX is Google Flights 2014-10-04T01:28:24Z Fare: QRes was the reservation system 2014-10-04T01:28:30Z White_Flame: ok, sounded like plural of QR at first, like QR codes or something 2014-10-04T01:28:38Z Fare: mostly dead, unless someone buys it from Google 2014-10-04T01:29:23Z White_Flame: I remember reading about that MMX issue now that you mention it 2014-10-04T01:29:43Z rme: that bug was a pain. 2014-10-04T01:29:46Z White_Flame: also Windows does something stupid with one of the segment registers in its thread context switch 2014-10-04T01:30:01Z Fare: if you have ~$200M and want to purchase a million line of Lisp code plus Java and Python (and a bit of C++) code, you could make a killing in the airline business 2014-10-04T01:31:00Z Fare: gb removed the optimization, but without those crashes, we'd have had data corruption — I much prefer horrible crashes to data corruption. 2014-10-04T01:31:09Z Trystam joined #lisp 2014-10-04T01:31:14Z White_Flame: yep 2014-10-04T01:32:06Z Fare: in any case, I was pleasantly surprised by the quality of CCL in a multithreaded context. 2014-10-04T01:32:24Z Fare: there were more corruptions due to bad optimizations on our side. 2014-10-04T01:32:50Z PuercoPop left #lisp 2014-10-04T01:32:56Z Fare: and there's horrible memory corruption if we upgrade to the latest CCL, which I suspect is more bugs on our side 2014-10-04T01:33:06Z PuercoPop joined #lisp 2014-10-04T01:34:09Z White_Flame: CCL has been rock solid on windows for us 2014-10-04T01:34:31Z White_Flame: but ccl64 is half the speed of sbcl32, last time we benchmarked about 2 years back 2014-10-04T01:34:39Z White_Flame: on the same win64 box 2014-10-04T01:34:46Z Fare: but won't get fixed unless someone purchases the software — BTW my $200M figure is something I made up, but is probably the order of magnitude of what it costs to hire the hackers to develop the software into something sellable to a big airline. 2014-10-04T01:35:10Z wizzo joined #lisp 2014-10-04T01:36:42Z knosys quit (Quit: WeeChat 0.4.2) 2014-10-04T01:36:59Z Fare: Our experience was that CCL compiles ~2-4 times faster than SBCL, but produces code that is ~2-4 times slower. Also that though CCL wasn't mature yet when we started using it, it's now quite decent, and has a much more reliable maintenance team who has deep knowledge of the system. 2014-10-04T01:37:52Z Fare: There are many things I don't like about the CCL source code — but I mostly don't have to deal with it, because gb & rme & gz are doing a great job of it already. 2014-10-04T01:38:07Z Fare: though frankly, the unpinned externals... that's bad stuff 2014-10-04T01:38:28Z dim: CCL > SBCL on GC too, as evidenved by pgloader 2014-10-04T01:38:29Z White_Flame: yeah, we use sockets instead of ffi for our heterogeneous code 2014-10-04T01:38:41Z dim: evidenced 2014-10-04T01:38:52Z dim: well, you get it, I hope 2014-10-04T01:39:03Z White_Flame: I think we do, evidently 2014-10-04T01:39:19Z Fare: QPX did a lot of tuning of the SBCL GC. the default parameters weren't fit for our usage. 2014-10-04T01:39:45Z dim: how do you tune SBCL GC? any resources about that? 2014-10-04T01:39:50Z White_Flame: same here. Curiously enough, we found our first random attempt at nursery size ended up being ideal across testing 2014-10-04T01:40:44Z Fare: dim: Martin Cracauer would be your resource for that. We changed default page size, initial memory pool size, and many more things. 2014-10-04T01:41:06Z White_Flame: yeah, I was right. Nursery size of 1GB got us best performance 2014-10-04T01:41:31Z White_Flame: granted, we do make a lot of short-lived garbage 2014-10-04T01:41:38Z dim: Fare: I mean, is it covered in the SBCL docs? is it all about doing some setf at the right time? 2014-10-04T01:41:39Z Fare: initially, we were maintaining pre-allocated object pools, but that was defeating SBCL's generational GC, so we got rid of that. 2014-10-04T01:41:58Z kanru` quit (Remote host closed the connection) 2014-10-04T01:42:07Z Fare: dim: I believe we had to patch constants in the C and Lisp runtimes. 2014-10-04T01:42:22Z dim: pgloader is currently very naive, but when given some data set, it will exhaust SBCL memory every time 2014-10-04T01:42:31Z kanru` joined #lisp 2014-10-04T01:42:41Z White_Flame: Fare: yeah, all this stuff is why I desire a GC written in Lisp itself, to be able to modify itself better at runtime, either heuristically or via user config 2014-10-04T01:42:43Z dim: Fare: oh. out of luck then. 2014-10-04T01:42:53Z dim: ok good night, soon to be 4am here. 2014-10-04T01:43:22Z Fare: White_Flame, didn't Will Clinger have a GC written in Scheme? 2014-10-04T01:43:46Z Fare: for Larceny 2014-10-04T01:44:23Z White_Flame: I'll check it out 2014-10-04T01:44:50Z oleo__ is now known as oleo 2014-10-04T01:44:58Z White_Flame: "Larceny was created to serve as a test vehicle for research on the performance impact of different programming styles--especially the cost of garbage collection--and on compiler optimizations." 2014-10-04T01:45:01Z Fare: dim: some of the parameters can be changed from Lisp, like the size of the nursery 2014-10-04T01:45:11Z tkhoa2711 joined #lisp 2014-10-04T01:49:50Z nerdbeard joined #lisp 2014-10-04T01:51:26Z Trystam is now known as Tristam 2014-10-04T01:51:49Z Karl_Dscc joined #lisp 2014-10-04T01:52:02Z nerdbeard: |3b|: freetype2:*library* was the cuplrit and my core works. Wow! Thanks. 2014-10-04T01:54:36Z TDog joined #lisp 2014-10-04T01:54:48Z knosys joined #lisp 2014-10-04T02:01:39Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T02:05:58Z nonamae quit (Ping timeout: 244 seconds) 2014-10-04T02:07:12Z simulacrum quit (Quit: No Ping reply in 180 seconds.) 2014-10-04T02:08:39Z simulacrum joined #lisp 2014-10-04T02:10:22Z drmeister: Fare: Hi - what was that test of ASDF that doesn't require create-system? I have everything ready finally to run some tests. 2014-10-04T02:10:28Z drmeister: create-image 2014-10-04T02:10:51Z Fare: pretty much all tests but test-program.script 2014-10-04T02:11:58Z drmeister: asdf:load-system ? 2014-10-04T02:13:45Z juniorroy joined #lisp 2014-10-04T02:14:01Z jusss` joined #lisp 2014-10-04T02:14:15Z drmeister: Which tests are those? I see asdf/test has a lot of files but the ones I've looked into don't invoke ASDF functions. 2014-10-04T02:15:14Z drmeister: run-tests.sh 2014-10-04T02:15:38Z juniorroy quit (Read error: Connection reset by peer) 2014-10-04T02:16:12Z drmeister: I know I've asked about this before. It's like once a month I ask but things have been chaotic. Whenever they calm down I start looking at ASDF again and then things get chaotic. 2014-10-04T02:18:08Z MutSbeta quit (Quit: Leaving.) 2014-10-04T02:21:32Z kanru` quit (Ping timeout: 245 seconds) 2014-10-04T02:21:34Z drmeister: I'm overextended. 2014-10-04T02:23:28Z Fare: make t l=clasp 2014-10-04T02:23:53Z Fare: I recommend you use the minimakefile branch and enhance it 2014-10-04T02:24:04Z drmeister: I can do this though with ASDF: 2014-10-04T02:24:07Z drmeister: https://www.irccloud.com/pastebin/s7kicIMw 2014-10-04T02:24:09Z Fare: instead of trying to get things to work with run-tests.sh 2014-10-04T02:25:15Z drmeister: It's compile-file(ing) ASDF and linking it into a shared library and then loading it back. 2014-10-04T02:25:47Z Fare: looks cool 2014-10-04T02:25:58Z Fare: does asdf itself work? 2014-10-04T02:26:48Z Fare: if you use the minimakefile branch (and even if not), you will have to update the lisp-invocation library 2014-10-04T02:26:50Z drmeister: It takes 24 seconds to load asdf.bundle - my one-pass Common Lisp compiler in action. 2014-10-04T02:27:28Z Fare: you could use .slol for your fasl extension. 2014-10-04T02:27:30Z drmeister: I have alexandria installed in the standard directory. 2014-10-04T02:27:40Z Fare: or .extremelyslol 2014-10-04T02:27:53Z drmeister: That makes me sad 2014-10-04T02:28:16Z drmeister: If I wanted to load the alexandria system - what would I do? 2014-10-04T02:28:19Z Fare: nah —that's called "room for improvement" 2014-10-04T02:28:35Z Fare: (asdf:load-system :alexandria) 2014-10-04T02:28:53Z drmeister: I think of it as "fast enough to bootstrap Common Lisp and load a better compiler once I have one". 2014-10-04T02:28:54Z Fare: assuming your source-registry is properly configured 2014-10-04T02:29:09Z drmeister: That's the one. Let me try it. (holding breath) 2014-10-04T02:29:31Z Fare: indeed it's slow but already usable 2014-10-04T02:29:54Z drmeister: https://www.irccloud.com/pastebin/KJcT3nU7 2014-10-04T02:30:52Z Fare: which version of asdf are you using? 2014-10-04T02:31:06Z Fare: please test from git master, or minimakefile 2014-10-04T02:31:30Z Fare: just in case that's the bug fixed in 3.1.3.4 2014-10-04T02:31:40Z MrWoohoo quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-10-04T02:31:41Z Fare: I mean, 3.1.3.3 2014-10-04T02:32:31Z drmeister: 3.1.2.9 2014-10-04T02:32:37Z Fare: no good. 2014-10-04T02:32:43Z Fare: Please upgrade to 3.1.3.10 2014-10-04T02:32:51Z drmeister: That's the value of ASDF/UPGRADE:*ASDF-VERSION* 2014-10-04T02:33:20Z drmeister: Ok. 2014-10-04T02:33:55Z drmeister: There is a github repo for ASDF - correct? 2014-10-04T02:35:07Z drmeister: got it. 2014-10-04T02:36:12Z tkhoa2711 joined #lisp 2014-10-04T02:37:31Z JuanitoJons quit (Quit: Saliendo) 2014-10-04T02:38:15Z phao quit (Quit: Leaving) 2014-10-04T02:38:26Z nonamae joined #lisp 2014-10-04T02:38:42Z phao joined #lisp 2014-10-04T02:40:12Z kushal joined #lisp 2014-10-04T02:40:23Z drmeister: I forked the asdf repo 2014-10-04T02:41:36Z chase_gr` joined #lisp 2014-10-04T02:43:30Z nand1` joined #lisp 2014-10-04T02:44:31Z gingerale- joined #lisp 2014-10-04T02:44:41Z eak_ joined #lisp 2014-10-04T02:45:26Z bobbysmith0071 joined #lisp 2014-10-04T02:46:16Z sjl- joined #lisp 2014-10-04T02:46:17Z oGMo_ joined #lisp 2014-10-04T02:48:02Z micro__ joined #lisp 2014-10-04T02:48:20Z stepnem_ joined #lisp 2014-10-04T02:48:22Z RenRenJuan quit (Quit: This computer has gone to sleep) 2014-10-04T02:48:35Z Neptu_ joined #lisp 2014-10-04T02:48:48Z finnrobi_ joined #lisp 2014-10-04T02:48:53Z Fare quit (Read error: Connection reset by peer) 2014-10-04T02:49:07Z nonamae_ joined #lisp 2014-10-04T02:49:24Z hq1_test joined #lisp 2014-10-04T02:49:24Z mtd joined #lisp 2014-10-04T02:51:55Z flip214_ joined #lisp 2014-10-04T02:52:22Z beach joined #lisp 2014-10-04T02:52:32Z beach: Good morning everyone! 2014-10-04T02:53:38Z galdor_ joined #lisp 2014-10-04T02:55:00Z AeroNotix_ joined #lisp 2014-10-04T02:55:32Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T02:56:15Z drmeister: Good morning beach 2014-10-04T02:56:40Z drmeister: Fare: After lots of messing with 'git submodule' I have 3.1.3.10 forked and installed. 2014-10-04T02:56:40Z nonamae quit (*.net *.split) 2014-10-04T02:56:40Z nand1 quit (*.net *.split) 2014-10-04T02:56:40Z gingerale quit (*.net *.split) 2014-10-04T02:56:40Z stepnem quit (*.net *.split) 2014-10-04T02:56:40Z jlarocco quit (*.net *.split) 2014-10-04T02:56:40Z mtd_ quit (*.net *.split) 2014-10-04T02:56:40Z micro quit (*.net *.split) 2014-10-04T02:56:40Z oGMo quit (*.net *.split) 2014-10-04T02:56:40Z Neptu quit (*.net *.split) 2014-10-04T02:56:40Z lifenoodles quit (*.net *.split) 2014-10-04T02:56:40Z flip214 quit (*.net *.split) 2014-10-04T02:56:40Z bobbysmith007 quit (*.net *.split) 2014-10-04T02:56:40Z hq1 quit (*.net *.split) 2014-10-04T02:56:40Z galdor quit (*.net *.split) 2014-10-04T02:56:40Z wchun quit (*.net *.split) 2014-10-04T02:56:41Z eak quit (*.net *.split) 2014-10-04T02:56:41Z Krystof quit (*.net *.split) 2014-10-04T02:56:41Z sjl quit (*.net *.split) 2014-10-04T02:56:41Z finnrobi quit (*.net *.split) 2014-10-04T02:56:41Z AeroNotix quit (*.net *.split) 2014-10-04T02:56:41Z gingerale- is now known as gingerale 2014-10-04T02:56:41Z oGMo_ is now known as oGMo 2014-10-04T02:56:45Z stepnem_ is now known as stepnem 2014-10-04T02:57:18Z jlarocco joined #lisp 2014-10-04T02:59:38Z lifenoodles joined #lisp 2014-10-04T02:59:57Z drmeister: Rebuilding... 2014-10-04T03:03:22Z stepnem quit (Ping timeout: 240 seconds) 2014-10-04T03:04:00Z paul0 quit (Remote host closed the connection) 2014-10-04T03:06:08Z paul0 joined #lisp 2014-10-04T03:06:22Z zacharias_ joined #lisp 2014-10-04T03:06:57Z InvalidCo: hmm 2014-10-04T03:07:04Z InvalidCo: sheeple is working out fine 2014-10-04T03:07:33Z InvalidCo: just needed to create some ugly gum to differentiate "abstract" declarations from actual ones 2014-10-04T03:07:39Z Karl_Dscc quit (Remote host closed the connection) 2014-10-04T03:07:55Z InvalidCo: I don't understand which of the instantiation mechanisms I'm supposed to use 2014-10-04T03:08:04Z InvalidCo: sheeple::make is not exported 2014-10-04T03:08:22Z InvalidCo: sheeple::create is exported and seems to be equivalent to make, but with a deprecation warning 2014-10-04T03:09:22Z zacharias quit (Ping timeout: 240 seconds) 2014-10-04T03:09:55Z Lycurgus joined #lisp 2014-10-04T03:09:59Z joneshf-laptop joined #lisp 2014-10-04T03:10:05Z InvalidCo: wow 2014-10-04T03:10:11Z InvalidCo: I didn't really realize it before 2014-10-04T03:10:25Z InvalidCo: but git's blame is a really useful feature 2014-10-04T03:10:26Z InvalidCo: https://github.com/sykopomp/sheeple/commit/1b7f2e4a4b81aa30773e2978de98bad7fb05d12b 2014-10-04T03:16:49Z thepreacher joined #lisp 2014-10-04T03:25:36Z drmeister: beach: When I was reading the Cleavir documentation I saw that MIR operates on unboxed numerical values for multiple steps (I'm not sure if I'm expressing that properly). Do I understand that correctly? 2014-10-04T03:27:21Z drmeister: I'm asking because I've been thinking about CL/C++ interop and when Clasp calls a C++ function it unboxes all of the arguments and then boxes up the result. 2014-10-04T03:28:47Z beach: drmeister: Yes... 2014-10-04T03:28:51Z drmeister: Would it be possible to do something similar with numerical values for other C++ values? Would this have value? 2014-10-04T03:29:33Z drmeister: Let's say STRING - in Clasp it's a boxed value that holds a pointer to a block of memory that contains a string. 2014-10-04T03:29:43Z beach: drmeister: The idea is that a numerical operation on something that can be unboxed (fixnum, float) is done by first unboxing, then doing the operation, then boxing the result. 2014-10-04T03:30:05Z beach: drmeister: That way, one can eliminate consecutive instances of box followed by unbox. 2014-10-04T03:30:52Z chitofan joined #lisp 2014-10-04T03:30:54Z drmeister: So if you do (+ (* x y) (* x y)) does Cleavir only unbox x and y each once? 2014-10-04T03:31:25Z beach: That's a different optimization, but I just figured out how to do it. 2014-10-04T03:31:48Z beach: Actually, this one is just common subexpression elimination. 2014-10-04T03:31:48Z drmeister: I'm not sure if that's a good example - right it could be optimized a different way. Common sub expression or something. 2014-10-04T03:32:08Z chitofan: anybody have experience using cl for embedded software? 2014-10-04T03:33:03Z beach: drmeister: But if you had (+ (* x y) (* y z) (* x z)) then yes. 2014-10-04T03:34:01Z drmeister: Right - ok. So with a STRING what about (str-concat (str-concat x y) (str-concat x z)). 2014-10-04T03:34:21Z beach: These are Clasp-specific operations? 2014-10-04T03:34:32Z drmeister: Yes, they could be. 2014-10-04T03:35:11Z drmeister: Let's say I define a C++: string str_concat(const string& x, const string& y) function. 2014-10-04T03:35:26Z beach: drmeister: You would have to define MIR operations for boxing and unboxing those. Then you would have to define an optimization that eliminates your boxing operation followed by your unboxing operation. 2014-10-04T03:35:41Z drmeister: Ah, I see. 2014-10-04T03:36:17Z drmeister: So the optimization is Unbox[x],Box[x] --> null 2014-10-04T03:36:47Z beach: drmeister: The inverse is more important. 2014-10-04T03:37:07Z drmeister: Duh - right, sorry. I got it switched. 2014-10-04T03:37:23Z nerdbeard left #lisp 2014-10-04T03:37:35Z drmeister: If you box something and then immediately unbox it you skip them both. 2014-10-04T03:37:44Z beach: Yes. 2014-10-04T03:37:53Z beach: Which eliminates intermediate boxing. 2014-10-04T03:38:27Z beach: So that boxing is only done when values are returned or otherwise used in a context that requires a Common Lisp value. 2014-10-04T03:39:33Z chase_gr` quit (Ping timeout: 272 seconds) 2014-10-04T03:39:43Z beach: I also use this mechanism for accessing specialized arrays. 2014-10-04T03:40:04Z beach: So an array of double floats contains unboxed values. 2014-10-04T03:40:27Z White_Flame: Do you ever let unboxed values cross function boundaries? 2014-10-04T03:40:36Z beach: No 2014-10-04T03:40:50Z beach: Reading a value from such an array is defined to be access+box. 2014-10-04T03:40:59Z beach: Writing is defined to be unbox+store. 2014-10-04T03:41:07Z drmeister: So if I had a C++ function like: string& roll(string& x) and from Clasp I call (ROLL (ROLL (ROLL x))) 2014-10-04T03:42:24Z drmeister: Currently it unboxes x, passes it to ROLL, boxes the result, unboxes it, passes that to ROLL, boxes the result, unboxes it again, passes that to ROLL and then boxes the result. 2014-10-04T03:42:31Z White_Flame: a "sufficiently smart compiler" might turn that into 3 iterations of an inlined ROLL implementation, unboxed within th eprocessing 2014-10-04T03:42:32Z beach: White_Flame: Inlining may eliminate some boxing, though. 2014-10-04T03:43:19Z White_Flame: beach: right. Unboxed params/returns is tied more to whole-program optimization as well 2014-10-04T03:43:39Z drmeister: I'm wondering if MIR generalizes the idea of boxing/unboxing values and could perform the optimization on the above. 2014-10-04T03:44:00Z beach: drmeister: Yes, if you define the ROLL function to consist of those MIR instruction, then it should be easy to optimize. 2014-10-04T03:44:33Z beach: drmeister: Currently, MIR doesn't have a general concept of boxing and unboxing, but that's an interesting idea. 2014-10-04T03:45:14Z beach: White_Flame: Some of it can be obtained within a compilation unit. 2014-10-04T03:45:16Z drmeister: The LLVM library does inlining as well at the LLVM-IR level. Currently in the above example it wouldn't do that inlining because there's a C++ template program generated wrapper around ROLL. 2014-10-04T03:46:59Z beach: I see. 2014-10-04T03:47:36Z drmeister: I currently use the LLVM inlining facility to inline C++ intrinsic functions into compiled Common Lisp code. 2014-10-04T03:49:05Z drmeister: But the wrapper functions in Clasp do add overhead to calls to C++ functions and I'm wondering if there would be a way to remove that overhead in situations such as those where you optimize numerical calculations. 2014-10-04T03:49:23Z drmeister: It sounds like Cleavir could do that. 2014-10-04T03:49:42Z drmeister: In Common Lisp there are a small number of primitive types. 2014-10-04T03:49:49Z beach: It sounds tricky to combine it with the use of LLVM inlining, though. 2014-10-04T03:50:00Z drmeister: In Clasp I currently have 278 "primitive" types. 2014-10-04T03:50:47Z loke_ joined #lisp 2014-10-04T03:50:52Z chitofan quit (Ping timeout: 246 seconds) 2014-10-04T03:51:11Z drmeister: When I expose other C++ libraries that will balloon. 2014-10-04T03:51:59Z drmeister: Those 278 primitive types include every C++ class that represents an AST node within Clang and all of the LLVM classes that represent LLVM-IR objects. 2014-10-04T03:52:20Z chase_gr` joined #lisp 2014-10-04T03:52:40Z drmeister: Anyway, it was just a thought. 2014-10-04T03:52:56Z beach: Why are they primitive types and not just Common Lisp classes? 2014-10-04T03:53:19Z drmeister: Common Lisp classes are arrays of slots. 2014-10-04T03:53:28Z beach: Says who? 2014-10-04T03:53:31Z Bike: standard-classes are, you can do weird shit with other ones 2014-10-04T03:53:54Z drmeister: Well, the way ECL and I implemented them they are. 2014-10-04T03:53:55Z Bike: have you looked at commonqt? i guess it's a bit late to ask, but 2014-10-04T03:54:33Z thepreacher quit (Quit: Leaving) 2014-10-04T03:54:41Z beach: drmeister: You could define a CLOS metaclass called (say) C++-class. 2014-10-04T03:55:35Z drmeister: I did make them all Common Lisp classes. 2014-10-04T03:56:25Z beach: But they are subclasses of STANDARD-CLASS? 2014-10-04T03:57:02Z drmeister: But in this case I'm not sure what to call them maybe "primitive types" is not the right term. 2014-10-04T03:57:06Z beach: Or rather, "instances" of STANDARD-CLASS? 2014-10-04T03:57:19Z drmeister: Let me check 2014-10-04T03:58:21Z beach: Sorry, it is still early in the morning for me, so a bit hard to distinguish between the different meta levels. 2014-10-04T03:58:56Z drmeister: Glad I'm not the only one. 2014-10-04T03:59:27Z beach: drmeister: You shouldn't be glad that other people are having your problems. 2014-10-04T04:00:28Z drmeister: Found one: 2014-10-04T04:00:38Z drmeister: https://www.irccloud.com/pastebin/Rmx6sXUl 2014-10-04T04:01:10Z beach: Oh, they are all built-in classes? 2014-10-04T04:01:33Z drmeister: Hmm, I'm not sure if that's the best example. 2014-10-04T04:01:49Z beach: That would be consistent with calling them "primitive". 2014-10-04T04:02:33Z beach: That solution might not be optimal if you have some common ways of manipulating them. 2014-10-04T04:02:38Z drmeister: I set things up so that I can use them as specializers in generic functions. 2014-10-04T04:02:47Z beach: That's orthogonal. 2014-10-04T04:03:11Z beach: You could still define a metaclass called C++-class. 2014-10-04T04:03:11Z drmeister: What is orthogonal? 2014-10-04T04:03:33Z beach: Independently of the metaclass of your classes, you can use them to dispatch on. 2014-10-04T04:04:06Z drmeister: Yes, what you see there looks like the C++ class hierarchy. The Common Lisp class hierarchy doesn't necessarily match the C++ hierarchy. 2014-10-04T04:04:25Z Bike: seriously, qt has qt-class or something, it's probably relevant 2014-10-04T04:04:33Z Bike: though it relies on C++ introspection macros 2014-10-04T04:04:34Z beach: drmeister: What Bike says. 2014-10-04T04:05:08Z beach: drmeister: It might be worthwhile thinking about a metaclass called C++-class (or something like that) which is a subclass of CLASS. 2014-10-04T04:05:08Z tkhoa2711 joined #lisp 2014-10-04T04:05:40Z drmeister: I'm not arguing, what would that provide? 2014-10-04T04:06:10Z Bike: well, you were talking about deboxing, you can imagine having a general deboxing operation for all c++ classes 2014-10-04T04:06:15Z Bike: since it should be about the same anyway 2014-10-04T04:06:15Z beach: drmeister: You might be able to treat C++ classes and their instances in some common way, as indicated by the metaclass. 2014-10-04T04:06:29Z beach: Right. 2014-10-04T04:08:52Z drmeister: Yes, I could add that quite easily. When CLOS starts up during the Clasp startup procedure it sets up all of the metaclasses from a table. Extra entries in the table create new metaclasses. 2014-10-04T04:09:00Z drmeister: Here's another example: 2014-10-04T04:09:04Z drmeister: https://www.irccloud.com/pastebin/fpZLMghZ 2014-10-04T04:09:28Z drmeister: This one is wrapped in a different way. 2014-10-04T04:09:42Z drmeister: But again, no common metaclass other than CL:T 2014-10-04T04:10:16Z drmeister: Ok, thanks. 2014-10-04T04:12:50Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2014-10-04T04:14:34Z pebcak9k joined #lisp 2014-10-04T04:14:41Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T04:15:31Z pebcak9k left #lisp 2014-10-04T04:18:23Z kobain joined #lisp 2014-10-04T04:18:58Z kobain quit (Max SendQ exceeded) 2014-10-04T04:25:18Z troydm quit (Ping timeout: 250 seconds) 2014-10-04T04:26:04Z tkhoa2711 joined #lisp 2014-10-04T04:27:24Z kobain joined #lisp 2014-10-04T04:28:00Z kobain quit (Max SendQ exceeded) 2014-10-04T04:28:18Z kobain joined #lisp 2014-10-04T04:33:20Z troydm joined #lisp 2014-10-04T04:39:57Z kpreid_ quit (Quit: Quitting) 2014-10-04T04:40:08Z kpreid joined #lisp 2014-10-04T04:41:20Z troydm quit (Ping timeout: 250 seconds) 2014-10-04T04:44:26Z wchun joined #lisp 2014-10-04T04:46:48Z rme quit (Quit: rme) 2014-10-04T04:47:04Z troydm joined #lisp 2014-10-04T04:47:35Z phao quit (Ping timeout: 258 seconds) 2014-10-04T04:51:47Z pjb: - 2014-10-04T04:52:26Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2014-10-04T04:53:14Z InvalidCo: heh 2014-10-04T04:53:51Z loke_ quit (Read error: Connection reset by peer) 2014-10-04T04:54:06Z InvalidCo: I just realized I need another method specialization gimmick 2014-10-04T04:54:17Z loke_ joined #lisp 2014-10-04T04:55:12Z troydm quit (Ping timeout: 250 seconds) 2014-10-04T04:55:41Z nightfly: It would be awesome if you could give a multimethod a custom dispatch function 2014-10-04T04:56:08Z Bike: you can in mop, or do you mean something else 2014-10-04T04:56:27Z nightfly wasn't aware that you could in mop, will have to research that 2014-10-04T05:00:56Z troydm joined #lisp 2014-10-04T05:05:03Z heddwch quit (Ping timeout: 246 seconds) 2014-10-04T05:05:27Z kobain joined #lisp 2014-10-04T05:06:44Z heddwch joined #lisp 2014-10-04T05:06:51Z kobain quit (Max SendQ exceeded) 2014-10-04T05:06:54Z troydm quit (Ping timeout: 250 seconds) 2014-10-04T05:07:09Z kobain joined #lisp 2014-10-04T05:07:42Z kobain quit (Max SendQ exceeded) 2014-10-04T05:08:01Z kobain joined #lisp 2014-10-04T05:08:02Z beach: In http://paste.lisp.org/+3325 SBCL warns that y is an unknown variable, but not if I remove the type declaration. Is this behavior defined somewhere in the Common Lisp HyperSpec? 2014-10-04T05:08:48Z Bike: huh, that seems wrong 2014-10-04T05:08:50Z pjb: beach: nope. Now warning is waranted. 2014-10-04T05:08:56Z pjb: s/ow/o/ 2014-10-04T05:09:07Z beach: Thanks. 2014-10-04T05:09:07Z Bike: and the warning is about the type declaration, not the code 2014-10-04T05:09:20Z pjb: (declare (special y)) declares the variable. 2014-10-04T05:09:42Z beach: Bike: I assume so, because when I remove the type declaration there is no warning. 2014-10-04T05:09:50Z Bike: that's gotta be annoying to do if you do the type declaration first or such 2014-10-04T05:10:15Z beach: Nah. 2014-10-04T05:10:39Z beach: You would first figure out if anything is special, then figure out if anything has a type declaration. 2014-10-04T05:11:34Z Bike: if you nest the declarations, like (let (...) (declare (special y)) (locally (declare (integer y)) ...)), there's no warning 2014-10-04T05:11:52Z beach: Interesting. 2014-10-04T05:13:00Z Bike: i don't think i could give you a clhs line, but it seems like a bug to me 2014-10-04T05:13:27Z beach: Yeah, me too. 2014-10-04T05:13:49Z Bike: clhs bound declaration/g 2014-10-04T05:14:01Z Bike: how's that work, well, that's the closest i can see cursorily 2014-10-04T05:16:06Z hiyosi quit (Ping timeout: 244 seconds) 2014-10-04T05:17:34Z beach: In the exa 2014-10-04T05:17:58Z beach: In the paste, the declaration of y in not a bound declaration according to that definition. 2014-10-04T05:19:08Z Bike: indeed it's not 2014-10-04T05:19:58Z Bike: the type and special decls are both free, but the type declaration applies to the same lexical area as the special declaration, and so i think the type declaration is legit 2014-10-04T05:20:13Z beach: Oh, yes, I agree. 2014-10-04T05:20:27Z beach: Otherwise, I wouldn't have been surprised by the SBCL behavior. 2014-10-04T05:20:43Z |3b|: question is whether declarations are in the scope of the form with the declarations 2014-10-04T05:20:50Z Bike: probably sbcl is not only warning on the declaration, but not using it, let me see 2014-10-04T05:20:52Z |3b| suspects the spec doesn't actually say 2014-10-04T05:21:00Z Bike: yeah, that's what i figure too 2014-10-04T05:21:46Z Bike: yet another reason special declarations suck. 2014-10-04T05:22:15Z beach: I'm lost. 2014-10-04T05:22:28Z Bike: what about? 2014-10-04T05:22:30Z beach: |3b|: Is that unclear somehow? 2014-10-04T05:22:43Z beach: The scope of a declaration? 2014-10-04T05:22:46Z |3b|: right 2014-10-04T05:23:06Z beach: The meaning of a type declaration is explained as I recall. 2014-10-04T05:23:11Z |3b|: if it is specified as the 'body' of the form with the declarations, that technically wouldn't include the declarations in that form 2014-10-04T05:23:13Z pjb: let contains an implicit locally. The scope of the declaration is that implicit locally. 2014-10-04T05:23:31Z pjb: Another locally should not be required. 2014-10-04T05:23:49Z beach: |3b|: Oh, I see what you mean. 2014-10-04T05:23:58Z Bike: nah it also applies to the variable bindings doesn't it 2014-10-04T05:24:07Z madrik joined #lisp 2014-10-04T05:24:16Z Bike: like, (let ((foo (this-definitely-produces-a-fixnum))) (declare (fixnum foo)) ...) 2014-10-04T05:24:22Z beach: On the other hand, there is no defined order of "evaluation" between declartions. 2014-10-04T05:24:30Z |3b|: yeah, LOCALLY says "evaluates a body of forms in a lexical environment where the given declarations have effect.", it doesn't say the declarations are in effect otherwise 2014-10-04T05:24:39Z beach: Bike: It does, yes. 2014-10-04T05:24:58Z |3b|: does it? 2014-10-04T05:25:00Z Bike: well, i can get sbcl to generate different code for nested decls and the decls in same scope, though it's in the opposite direction i expected 2014-10-04T05:25:13Z beach: Bike: That one means (let ((foo (...))) (the fixnum foo) ...) 2014-10-04T05:25:13Z pjb: Bike: from the whole CLHS, I don't see how (declare (fixnum foo)) can have any effect on the variable foo, whatsoever. 2014-10-04T05:25:37Z Bike: Huh? 2014-10-04T05:25:54Z pjb: Bike: (declare (fixnum foo)) is a promise made by the programmer TO the compiler, that all the variables that will be bound to foo will be of type fixnum. That doesn't imply any effect on the variable itself. 2014-10-04T05:26:08Z Bike: it declares that in the body the variable 'foo' could be replaced by '(the fixnum foo)' 2014-10-04T05:26:29Z beach: And also that the body starts with (the fixnum foo). 2014-10-04T05:26:41Z |3b|: if FOO isn't a fixnum when you enter the scope of the declaration that is undefined behavior, but the declaration doesn't affect the initialization 2014-10-04T05:26:42Z pjb: My point is that whether the compiler takes it to optimize the representation (storage) of the variable is irrelevant to the scope of the declaration. 2014-10-04T05:26:52Z zeitue quit (Ping timeout: 240 seconds) 2014-10-04T05:26:56Z beach: |3b|: Not true. 2014-10-04T05:26:58Z Bike: you know what, i'm too tired to think about minitiuea tonight, or even spell it, i'll leave y'all to this, g'luck 2014-10-04T05:27:16Z beach: |3b|: Like I said, the meaning includes an initial (the fixnum foo) in the body. 2014-10-04T05:27:34Z |3b|: beach: right, that's the undefined behavior if it isn't a fixnum when the scope is entered 2014-10-04T05:27:51Z Anarch_ is now known as Anarch 2014-10-04T05:28:12Z pjb: Notably, (let ((foo 42)) (declare (fixnum foo)) (locally (declare (real foo)) (setf foo 4.2) (setf foo 42))) is conforming. Ponder what optimizations on the representation of the variable a compiler may do… 2014-10-04T05:28:38Z |3b|: ah, i guess it does specify the initial value must be that type also 2014-10-04T05:28:51Z beach: |3b|: That's what I said. 2014-10-04T05:29:10Z beach: |3b|: The meaning includes an initial (the fixnum foo) in the body. 2014-10-04T05:29:43Z beach: Which is pretty much the same as (let ((foo (the fixnum ...))) ...) 2014-10-04T05:30:09Z pjb: + (setf foo (the fixnum …)) for all setf foo. 2014-10-04T05:30:15Z |3b|: yeah, i was confused 2014-10-04T05:30:23Z beach: pjb: Yes, that was never disputed. 2014-10-04T05:30:33Z pjb: just precising. 2014-10-04T05:30:36Z beach: OK 2014-10-04T05:31:09Z |3b|: still doesn't say whether free declarations scope includes the declarations in same scope 2014-10-04T05:31:50Z beach: Yes, I haven't seen anything explicit about that. 2014-10-04T05:32:12Z |3b|: some things mention 'lexical scope of declaration' which suggests yes, that bit from locally suggests no 2014-10-04T05:32:18Z pjb: There's no order to be taken into account, because of the declarative nature of declarations. 2014-10-04T05:32:33Z |3b|: right, no order just scope 2014-10-04T05:32:39Z |3b|: they are either all in scope or none 2014-10-04T05:33:44Z jusss` is now known as jusss 2014-10-04T05:33:45Z beach: But I agree with Bike that SPECIAL declarations aren't really declarations. 2014-10-04T05:34:00Z jusss quit (Changing host) 2014-10-04T05:34:00Z jusss joined #lisp 2014-10-04T05:34:37Z beach: Isn't it Scheme that has DYNAMIC-LET or something like that? 2014-10-04T05:35:04Z pjb: Now, perhaps the strange thing is that in (let ((y 33)) (declare (special y)) (let ((y 42)) (locally (declare (special y)) y))) --> 33 ; ie. when I say that let contains an implicit locally, this is not entirely exact, or more precisely, if it does, this locally encloses the let scope (but not the initialization expressions). 2014-10-04T05:35:41Z pjb: beach: they're special, since they have to be processed specially by all implementations :-) 2014-10-04T05:35:43Z |3b|: LOCALLY are always free declarations, so not same as a bound declaration on a binding 2014-10-04T05:36:15Z beach: pjb: and also special in that they generate a lot of discussion. 2014-10-04T05:36:25Z pjb: :-) 2014-10-04T05:37:25Z hiyosi joined #lisp 2014-10-04T05:37:30Z Krystof joined #lisp 2014-10-04T05:39:53Z chase_gr` quit (Ping timeout: 272 seconds) 2014-10-04T05:40:05Z zeitue joined #lisp 2014-10-04T05:43:21Z Bike: i think they're declarations in CL because historically they were bla bla compiler optimizations bla bla history of dynamic scope bla bla 2014-10-04T05:43:28Z |3b|: clhs 3.3.4 2014-10-04T05:43:28Z specbot: Declaration Scope: http://www.lispworks.com/reference/HyperSpec/Body/03_cd.htm 2014-10-04T05:43:43Z |3b|: ^ that sounds like it should affect it 2014-10-04T05:44:18Z Bike: i like thinking of declarations as about the semantics of compiled programs and compile-y optimizations evaluators can do, like with notinline, so special is rather wrench-throwing 2014-10-04T05:44:21Z |3b|: well, aside from the question of whether declarations are part of the 'body' or not 2014-10-04T05:44:24Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T05:44:56Z Bike: there's already progv, and that's a special operator despite not having any semantics a function couldn't do, it's not like dynamic-let would be too onerous 2014-10-04T05:45:27Z Bike: or just (symbol-macrolet ((var (symbol-value 'var))) ...) but hey 2014-10-04T05:47:52Z beach: |3b|: Doesn't really say, does it? 2014-10-04T05:48:16Z mrSpec joined #lisp 2014-10-04T05:48:40Z |3b|: yeah, i guess not 2014-10-04T05:49:11Z |3b|: the paragraph i was looking at only applies to free declarations affecting lexically enclosing bindings :/ 2014-10-04T05:52:13Z |3b|: it says 'body subforms', and 'subforms' includes 'expressions', and DECLARE says 'at the beginning' of the bodies rather than 'before' suggesting DECLARE expressions are included in the 'body subforms' 2014-10-04T05:54:00Z beach: But a subform is a form "by virtue of its position", and a declaration is not a form. 2014-10-04T05:54:17Z |3b|: though DEFUN describes 'body' in terms of the 'forms' which are evaluated 2014-10-04T05:55:18Z |3b|: hmm 2014-10-04T05:55:21Z beach: I just don't think they thought this out very carefully, so it is probably futile to search for the exact meaning in the Common Lisp HyperSpec. 2014-10-04T05:55:42Z |3b|: yeah, that was my original thought as well 2014-10-04T05:56:35Z |3b|: yeah, the example in glossary entry for 'subform' makes it pretty clear only the evaluated parts are 'subforms' 2014-10-04T05:57:14Z beach: I agree. 2014-10-04T05:58:15Z beach: So SBCL might be right after all. 2014-10-04T05:58:36Z Bike: case probably doesn't come up much 2014-10-04T05:58:53Z jackdaniel quit (Quit: leaving) 2014-10-04T05:59:03Z beach: Right. Declaring the type of a special variable is pretty strange anyway. 2014-10-04T05:59:33Z |3b|: not really 2014-10-04T05:59:44Z Bike: well, locally it's kind of weird yeah 2014-10-04T05:59:45Z |3b|: might not be common, but wouldn't say it is strange 2014-10-04T06:00:01Z beach: Well, I know what it means, but it's strange that the declaration applies to the lexical scope and not the extent. 2014-10-04T06:00:19Z Bike: nah, that makes sense to me. 2014-10-04T06:00:31Z Bike: especially since i don't know what a compiler could do with the dynamic extent 2014-10-04T06:00:40Z beach: Sure. 2014-10-04T06:00:44Z beach: Like I said, the meaning is clear. 2014-10-04T06:01:05Z beach: "wrap THE around references in scope" 2014-10-04T06:01:41Z MrWoohoo joined #lisp 2014-10-04T06:02:03Z |3b|: could be useful if you want to bind the special to some large transient object when working with it, but NIL or unbound otherwise for example 2014-10-04T06:03:20Z beach: Still, what if you have (let ((x ...)) (declare (special x) (type integer x)) (external-call) ... x) 2014-10-04T06:03:50Z bgs100 quit (Quit: bgs100) 2014-10-04T06:04:02Z beach: We don't know what x contains after the external call, despite the declaration. 2014-10-04T06:04:39Z |3b|: right, and if it isn't an integer you have undefined behavior if you access it 2014-10-04T06:04:43Z anunnaki quit (Read error: Connection reset by peer) 2014-10-04T06:04:44Z Bike: eh, isn't that like (external-call) ... (the integer x)? 2014-10-04T06:04:52Z |3b| isn't sure if it is undefined if you don't access it 2014-10-04T06:04:55Z beach: Bike: Don't think so. 2014-10-04T06:05:12Z Bike: but you just said, wrap THE around references in scope... 2014-10-04T06:05:12Z beach: Bike: THE is used only for assignments. 2014-10-04T06:05:32Z beach: Hmm, hold on. Let me check what it says... 2014-10-04T06:05:33Z Bike: whaaaaat 2014-10-04T06:05:46Z |3b|: "1. During the execution of any reference to the declared variable within the scope of the declaration, the consequences are undefined if the value of the declared variable is not of the declared type. " 2014-10-04T06:06:04Z beach: Bike: I might be misremembering. Hold on. 2014-10-04T06:07:14Z beach: Bike: Sorry, both assignments and references. 2014-10-04T06:07:30Z beach: Still too early for me it seems. 2014-10-04T06:07:46Z Bike: (defun (x y) (declare (fixnum x y)) (+ x y)) having to use generic arithmetic would be wacky 2014-10-04T06:08:18Z beach: For lexical variables there is no problem. 2014-10-04T06:08:35Z beach: If all assignments have a THE, then the value must be the right type. 2014-10-04T06:09:47Z |3b|: seems mostly clear for bound declarations on specials as well 2014-10-04T06:10:48Z beach: |3b|: Only if references are wrapped in THE as well. 2014-10-04T06:11:19Z |3b|: only unclear bit is if it becomes some other type in a call to something outside that lexical scope and then isn't further accessed 2014-10-04T06:11:37Z beach: |3b|: In an implementation that checks the types, after an external call, the type does have to be checked if the variable is special. Not otherwise. 2014-10-04T06:11:37Z leo2007 quit (Read error: Connection reset by peer) 2014-10-04T06:11:38Z |3b|: beach: bit i quoted seemed pretty explicit 2014-10-04T06:11:53Z |3b|: if you access it, you have undefined behavior 2014-10-04T06:12:13Z |3b|: same way you would if you wrapped it with THE before accessing it 2014-10-04T06:12:38Z |3b|: failing to notice it is the wrong type is included in undefined behavior 2014-10-04T06:12:39Z beach: |3b|: I am interested in the case where an implementation defines the behavior to signal an error. 2014-10-04T06:12:58Z |3b|: sure, in that case it has to do extra checks 2014-10-04T06:13:08Z beach: Not if the variable is lexical. 2014-10-04T06:13:12Z |3b|: right 2014-10-04T06:13:20Z beach: Good, so we agree. 2014-10-04T06:13:42Z |3b|: 'that case' meaning it wants errors, has a special, and called an unknown function 2014-10-04T06:13:58Z beach: I guess there is no great harm in wrapping THE around references to lexical variables as well. The type inference mechanism will remove it. 2014-10-04T06:14:25Z beach: |3b|: Agreed. 2014-10-04T06:21:38Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-10-04T06:21:43Z rtra quit (Ping timeout: 244 seconds) 2014-10-04T06:22:21Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2014-10-04T06:33:20Z tadni_ quit (Ping timeout: 260 seconds) 2014-10-04T06:33:42Z tkhoa2711 joined #lisp 2014-10-04T06:41:05Z oudeis joined #lisp 2014-10-04T06:42:27Z rtra joined #lisp 2014-10-04T06:49:16Z mishoo joined #lisp 2014-10-04T06:50:03Z Shinmera joined #lisp 2014-10-04T06:52:08Z c107 quit (Remote host closed the connection) 2014-10-04T06:55:48Z DTSCode joined #lisp 2014-10-04T06:56:37Z c107 joined #lisp 2014-10-04T06:58:20Z denisrum joined #lisp 2014-10-04T07:01:11Z c107 quit (Remote host closed the connection) 2014-10-04T07:02:08Z on4k joined #lisp 2014-10-04T07:03:21Z jtza8 joined #lisp 2014-10-04T07:05:32Z nell quit (Quit: WeeChat 1.1-dev) 2014-10-04T07:06:39Z kushal quit (Quit: Leaving) 2014-10-04T07:07:52Z jtza8 quit (Ping timeout: 240 seconds) 2014-10-04T07:09:10Z leo2007 joined #lisp 2014-10-04T07:11:48Z kushal joined #lisp 2014-10-04T07:14:01Z zacharias_ quit (Ping timeout: 258 seconds) 2014-10-04T07:23:49Z nonamae_ quit (Ping timeout: 260 seconds) 2014-10-04T07:24:15Z oudeis quit (Read error: No route to host) 2014-10-04T07:24:49Z nug700 joined #lisp 2014-10-04T07:27:33Z otwieracz quit (Ping timeout: 260 seconds) 2014-10-04T07:30:07Z arenz joined #lisp 2014-10-04T07:33:11Z madrik quit (Ping timeout: 258 seconds) 2014-10-04T07:35:12Z otwieracz joined #lisp 2014-10-04T07:39:55Z zRecursive joined #lisp 2014-10-04T07:40:03Z nonamae_ joined #lisp 2014-10-04T07:41:44Z beach: Just to determine a new environment for compiling the body of a LET is non-trivial. 2014-10-04T07:42:09Z beach: A variable can be special if it is declared special or if it is globally special. 2014-10-04T07:42:37Z beach: Then, variables could have type declarations and dynamic extent declarations. 2014-10-04T07:42:56Z beach: Then there can be free declarations referring to variables and functions. 2014-10-04T07:43:25Z beach: Finally, there can be free declarations such as OPTIMIZE. 2014-10-04T07:44:15Z beach: All that information must go into the augmented environment. 2014-10-04T07:45:17Z Krystof: just wait till you get to let* 2014-10-04T07:45:26Z beach: Yeah, I know. 2014-10-04T07:46:54Z svetlyak40wt joined #lisp 2014-10-04T07:47:15Z hiroakip joined #lisp 2014-10-04T07:48:47Z beach: Krystof: Do you think the behavior of SBCL in the example I gave is intentional? 2014-10-04T07:49:15Z beach: A free SPECIAL declaration and a free TYPE declaration of the same variable gives a warning in the TYPE declaration that the variable is undefined. 2014-10-04T07:54:03Z aftershave joined #lisp 2014-10-04T07:57:55Z svetlyak40wt quit (Remote host closed the connection) 2014-10-04T07:58:01Z fridim__ joined #lisp 2014-10-04T07:59:53Z marvin-hh: Is there anything in SBCL what wasn't there 5 years ago and which can considered to be notable? 2014-10-04T08:00:17Z wasamasa: the arm support? 2014-10-04T08:00:36Z marvin-hh: wasamasa: and in terms of tools? 2014-10-04T08:00:58Z wasamasa: marvin-hh: no idea, this is the only news I've heard of 2014-10-04T08:03:30Z easye: SBCL runs on Windows. 2014-10-04T08:03:36Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T08:05:30Z tkhoa2711 joined #lisp 2014-10-04T08:08:00Z ndrei joined #lisp 2014-10-04T08:08:59Z kushal quit (Quit: Leaving) 2014-10-04T08:12:34Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T08:12:37Z vaporatorius joined #lisp 2014-10-04T08:20:25Z madmalik joined #lisp 2014-10-04T08:28:43Z zacharias joined #lisp 2014-10-04T08:36:23Z freaksken joined #lisp 2014-10-04T08:39:22Z on4k quit (Ping timeout: 272 seconds) 2014-10-04T08:39:56Z angavrilov joined #lisp 2014-10-04T08:44:03Z svetlyak40wt joined #lisp 2014-10-04T08:45:47Z stepnem joined #lisp 2014-10-04T08:46:44Z svetlyak40wt quit (Remote host closed the connection) 2014-10-04T08:46:51Z on4k joined #lisp 2014-10-04T08:47:14Z on4k is now known as Guest98135 2014-10-04T08:51:49Z nug700 quit (Quit: bye) 2014-10-04T08:52:54Z Guest98135 quit (Ping timeout: 246 seconds) 2014-10-04T08:57:54Z stoned is now known as Apatheignostic 2014-10-04T08:59:30Z k-stz joined #lisp 2014-10-04T09:00:39Z H4ns: marvin-hh: ipv6 support in sb-bsd-sockets 2014-10-04T09:01:19Z zRecursive quit (Remote host closed the connection) 2014-10-04T09:01:26Z H4ns: marvin-hh: actually, why don't you just give yourself a treat by looking at the version control log. there have been countless improvements and changes in the last five years. 2014-10-04T09:02:32Z defaultxr quit (Quit: gnight) 2014-10-04T09:04:36Z jegaxd26 joined #lisp 2014-10-04T09:06:24Z mutley89 quit (Quit: Leaving) 2014-10-04T09:06:42Z resttime quit (Quit: resttime) 2014-10-04T09:07:17Z hiroakip quit (Ping timeout: 245 seconds) 2014-10-04T09:07:26Z Krystof: beach: I haven't seen your example 2014-10-04T09:07:28Z hardenedapple joined #lisp 2014-10-04T09:07:42Z Krystof: marvin-hh: or just the NEWS file 2014-10-04T09:08:32Z varjag_ joined #lisp 2014-10-04T09:25:35Z theos quit (Disconnected by services) 2014-10-04T09:26:04Z theos joined #lisp 2014-10-04T09:27:02Z Lycurgus quit (Quit: This computer has gone to sleep) 2014-10-04T09:29:55Z jtza8 joined #lisp 2014-10-04T09:32:07Z serichsen joined #lisp 2014-10-04T09:33:01Z serichsen: Good morning! 2014-10-04T09:41:23Z chitofan joined #lisp 2014-10-04T09:47:33Z farhaven quit (Ping timeout: 260 seconds) 2014-10-04T09:51:29Z stardiviner joined #lisp 2014-10-04T09:52:16Z beach: Krystof: http://paste.lisp.org/+3325 2014-10-04T09:52:28Z beach: Hello serichsen. 2014-10-04T09:55:52Z Krystof: I don't think that it's intentional, no 2014-10-04T09:57:21Z beach: OK. Discussing with Bike and |3b|, we figured it *might* be conforming behavior, but it is a bit surprising. The Common Lisp HyperSpec is vague on the subject. 2014-10-04T09:58:27Z Adlai quit (Ping timeout: 264 seconds) 2014-10-04T09:58:28Z ndrei quit (Ping timeout: 258 seconds) 2014-10-04T10:00:01Z Krystof: there are some nasty lurking corners 2014-10-04T10:00:27Z beach: Yes, we noticed this one by reading and interpreting together. 2014-10-04T10:01:17Z Krystof: here's one that makes my brain hurt: (defvar a -1) (symbol-macrolet ((a 0)) (let ((a 1)) (locally (declare (special a)) (macrolet ((foo () `',a)) (foo))))) 2014-10-04T10:01:24Z Adlai joined #lisp 2014-10-04T10:01:40Z chitofan: whats the feature at the bottom of emacs called? 2014-10-04T10:01:48Z Krystof: mode line, or minibuffer 2014-10-04T10:01:48Z |3b|: modeline? 2014-10-04T10:01:59Z chitofan: when you type (+ it shows (+ &lexpr numbers) 2014-10-04T10:02:04Z chitofan: oh 2014-10-04T10:02:06Z Krystof: autodoc 2014-10-04T10:02:30Z Krystof: or maybe not defvar, but (let ((a -1)) (declare (special a)) (symbol-macrolet ...)) 2014-10-04T10:02:43Z |3b|: &lexpr ? 2014-10-04T10:03:12Z chitofan: ya 2014-10-04T10:03:21Z |3b|: which lisp is that? 2014-10-04T10:03:48Z chitofan: its not common lisp? 2014-10-04T10:04:16Z |3b|: nope, looks like it might be some CCL internals 2014-10-04T10:05:41Z pnpuff joined #lisp 2014-10-04T10:05:47Z beach: Krystof: Looks like 1 to me. 2014-10-04T10:05:59Z beach: But yeah, pretty complex. 2014-10-04T10:07:18Z beach: Hmm. 2014-10-04T10:07:21Z beach: 0 2014-10-04T10:10:00Z Krystof: :-) 2014-10-04T10:10:03Z troydm joined #lisp 2014-10-04T10:10:16Z beach: chitofan: About your earlier question regarding the product of the company you work for, I have counter questions for you. What programming languages do you have significant experience with? 2014-10-04T10:10:24Z Krystof: what about if I do (setq a -2) at toplevel? 2014-10-04T10:10:38Z Krystof: or (setf (symbol-value 'a) -2), rather 2014-10-04T10:10:45Z Krystof: (but no global special declaration) 2014-10-04T10:11:08Z beach: Good question. 2014-10-04T10:11:17Z ndrei joined #lisp 2014-10-04T10:11:30Z chitofan: beach: none 2014-10-04T10:11:35Z stardiviner quit (Ping timeout: 272 seconds) 2014-10-04T10:11:44Z beach: chitofan: And your boss would let you do that? 2014-10-04T10:11:50Z chitofan: thats not tongue in cheek.. 2014-10-04T10:12:00Z beach: I believe you. 2014-10-04T10:12:02Z chitofan: apparently..yes 2014-10-04T10:12:19Z beach: He needs to do a risk analysis. 2014-10-04T10:12:39Z chitofan: he does 2014-10-04T10:13:09Z gravicappa joined #lisp 2014-10-04T10:13:26Z beach: The danger I see from the perspective of #lisp is that you might fail, and then it is almost certain that the programming language gets blamed. 2014-10-04T10:14:09Z chitofan: no, i don't think i'll be using cl 2014-10-04T10:14:10Z beach: Because it is hard to admit any other reason, like a faulty risk analysis or having underestimated the time it takes to learn to program. 2014-10-04T10:14:22Z beach: chitofan: OK, good :) 2014-10-04T10:23:27Z wasamasa: chitofan: you should still check out ##lisp :P 2014-10-04T10:24:36Z chitofan: wasamasa: nobody's there :( 2014-10-04T10:24:41Z wasamasa: chitofan: I am 2014-10-04T10:24:53Z wasamasa: chitofan: and seven other persons 2014-10-04T10:25:09Z wasamasa: err, entities 2014-10-04T10:25:12Z wasamasa: chanserv doesn't count 2014-10-04T10:27:59Z stardiviner joined #lisp 2014-10-04T10:28:41Z hugod quit (Remote host closed the connection) 2014-10-04T10:29:26Z hugod joined #lisp 2014-10-04T10:29:49Z hugod is now known as Guest71844 2014-10-04T10:30:22Z araujo quit (Ping timeout: 240 seconds) 2014-10-04T10:30:49Z Guest71844 is now known as hugoduncan 2014-10-04T10:32:29Z araujo joined #lisp 2014-10-04T10:33:15Z nonamae_ quit (Ping timeout: 272 seconds) 2014-10-04T10:33:16Z vaporatorius quit (Quit: Leaving) 2014-10-04T10:39:33Z effy quit (Quit: No Ping reply in 180 seconds.) 2014-10-04T10:39:57Z effy joined #lisp 2014-10-04T10:46:02Z stardiviner quit (Ping timeout: 245 seconds) 2014-10-04T10:47:24Z ehu joined #lisp 2014-10-04T10:48:00Z Davidbrcz joined #lisp 2014-10-04T10:49:21Z ggole joined #lisp 2014-10-04T11:02:45Z ehu quit (Ping timeout: 246 seconds) 2014-10-04T11:04:17Z therik joined #lisp 2014-10-04T11:04:26Z therik: Hello 2014-10-04T11:10:35Z araujo quit (Quit: Leaving) 2014-10-04T11:11:29Z beach: Hi therik. 2014-10-04T11:12:04Z jtza8 quit (Ping timeout: 258 seconds) 2014-10-04T11:15:55Z therik: I've got trouble updating swank on server, I ran ql:update-all-dists that completed successfully, deleted ~/.slime and when I (ql:quickload :swank) it installs new stuff into ~/.slime 2014-10-04T11:16:07Z MutSbeta joined #lisp 2014-10-04T11:16:22Z zz_karupa is now known as karupa 2014-10-04T11:16:26Z therik: then when I try to connect to that form slime, it tells me there's mismatch in versions 2014-10-04T11:16:54Z therik: shouldn't ql install compatible versions of slime/swank? 2014-10-04T11:17:21Z H4ns: therik: you need to install :quicklisp-slime-helper 2014-10-04T11:18:00Z therik: H4ns even on remote server? 2014-10-04T11:18:51Z Davidbrcz quit (Ping timeout: 272 seconds) 2014-10-04T11:21:28Z H4ns: i'd do that, sure. and obviously, if you are using a remote connection, you'll have to have the same version installed on your local machine and on the remote 2014-10-04T11:24:36Z c74d quit (Remote host closed the connection) 2014-10-04T11:24:45Z ehu joined #lisp 2014-10-04T11:25:45Z therik: I suppose so, I have newer version of slime (october) on local, but the error says that slime is from april and swank is august. Is it just the message being wrong? 2014-10-04T11:26:11Z H4ns: you'll find out. or just install the same version on both. 2014-10-04T11:27:13Z c74d joined #lisp 2014-10-04T11:28:14Z Svetlana quit (Quit: ?? ????????) 2014-10-04T11:28:56Z jackdaniel joined #lisp 2014-10-04T11:42:07Z on4k joined #lisp 2014-10-04T11:43:59Z kcj quit (Read error: Connection reset by peer) 2014-10-04T11:44:20Z kuzy000 joined #lisp 2014-10-04T11:44:28Z pnpuff quit (Ping timeout: 256 seconds) 2014-10-04T11:45:32Z arenz quit (Ping timeout: 260 seconds) 2014-10-04T11:47:10Z svetlyak40wt joined #lisp 2014-10-04T11:49:58Z kuzy000 quit (Quit: No Ping reply in 180 seconds.) 2014-10-04T11:51:41Z svetlyak40wt quit (Ping timeout: 260 seconds) 2014-10-04T11:52:59Z kuzy000 joined #lisp 2014-10-04T11:53:01Z Nizumzen joined #lisp 2014-10-04T11:55:19Z stassats joined #lisp 2014-10-04T11:55:56Z Mon_Ouie quit (Quit: WeeChat 1.0) 2014-10-04T11:58:07Z kuzy000 quit (Ping timeout: 245 seconds) 2014-10-04T11:58:34Z kuzy000 joined #lisp 2014-10-04T12:08:46Z oleo is now known as Guest98341 2014-10-04T12:09:49Z shka joined #lisp 2014-10-04T12:09:54Z shka: ave tux 2014-10-04T12:10:04Z shka: how usable lisplab is? 2014-10-04T12:10:17Z shka: is there anything better for high performance math? 2014-10-04T12:11:45Z Guest98341 quit (Ping timeout: 260 seconds) 2014-10-04T12:13:51Z chitofan quit (Quit: Page closed) 2014-10-04T12:13:57Z oleo__ joined #lisp 2014-10-04T12:14:05Z oleo__ quit (Read error: Connection reset by peer) 2014-10-04T12:15:26Z oleo joined #lisp 2014-10-04T12:15:29Z Svetlana joined #lisp 2014-10-04T12:15:32Z shka quit (Quit: Page closed) 2014-10-04T12:17:56Z tkhoa2711 joined #lisp 2014-10-04T12:18:15Z Svetlana quit (Read error: Connection reset by peer) 2014-10-04T12:21:54Z on4k quit (Quit: Leaving) 2014-10-04T12:25:26Z Lycurgus joined #lisp 2014-10-04T12:26:45Z phao joined #lisp 2014-10-04T12:28:36Z Lycurgus quit (Read error: Connection reset by peer) 2014-10-04T12:29:02Z shka joined #lisp 2014-10-04T12:29:11Z shka: sorry, connection problem 2014-10-04T12:29:36Z shka: so let's assume i want to use lisplab 2014-10-04T12:29:55Z shka: does anybody have any opinion on this lib? 2014-10-04T12:30:06Z stassats: apparently not 2014-10-04T12:30:37Z shka: well, i'm open in any directions about doing math with cl 2014-10-04T12:30:45Z stassats: clhs +/f 2014-10-04T12:30:45Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_pl.htm 2014-10-04T12:31:31Z shka: stassats: why you are doing that? 2014-10-04T12:31:43Z shka: i'm asking serious question 2014-10-04T12:32:26Z shka: it is not precise, but i'm not even 100% sure what will be needed 2014-10-04T12:39:11Z ehu: shka: finding a solution succeeds identifying the problem. 2014-10-04T12:39:51Z ehu: in other words, if you can't ask a (specific enough) question, how can you expect a (precise enough) answer? 2014-10-04T12:40:41Z shka: ehu: i'm expecting useful hints, not precise answer 2014-10-04T12:42:35Z Shinmera: Personally I found stassats' answer to be very useful. I use + very often to do high performance math. 2014-10-04T12:43:23Z Shinmera: Either way, if you give a topic as broad as 'math', there's really pretty much nothing anyone could say. 2014-10-04T12:43:38Z stassats: i also use - 2014-10-04T12:43:51Z ehu: well, there are two problems: no math application is all-encompassing, so we can't really provide you an answer with that. The other (whih I'm just assuming) is that the people attending may not be able to answer the question on any of the available sub-sets. 2014-10-04T12:46:35Z nell joined #lisp 2014-10-04T12:48:43Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T12:51:04Z tkhoa2711 joined #lisp 2014-10-04T12:54:27Z Beetny quit (Ping timeout: 245 seconds) 2014-10-04T12:55:02Z zacharias quit (Quit: Bye!) 2014-10-04T12:55:32Z therik quit (Ping timeout: 260 seconds) 2014-10-04T12:55:39Z mvilleneuve joined #lisp 2014-10-04T12:55:41Z Grue`: my kind of math probably involves something like AXIOM 2014-10-04T12:56:28Z karupa is now known as zz_karupa 2014-10-04T12:58:24Z Ralt quit (Ping timeout: 272 seconds) 2014-10-04T13:00:17Z gravicappa quit (Ping timeout: 272 seconds) 2014-10-04T13:00:37Z farhaven joined #lisp 2014-10-04T13:00:49Z kobain joined #lisp 2014-10-04T13:00:59Z Davidbrcz joined #lisp 2014-10-04T13:01:25Z kobain quit (Max SendQ exceeded) 2014-10-04T13:01:45Z kobain joined #lisp 2014-10-04T13:02:20Z kobain quit (Max SendQ exceeded) 2014-10-04T13:02:34Z zickzackv joined #lisp 2014-10-04T13:02:38Z kobain joined #lisp 2014-10-04T13:03:15Z kobain quit (Max SendQ exceeded) 2014-10-04T13:03:33Z kobain joined #lisp 2014-10-04T13:04:10Z kobain quit (Max SendQ exceeded) 2014-10-04T13:04:35Z kobain joined #lisp 2014-10-04T13:05:56Z kobain quit (Max SendQ exceeded) 2014-10-04T13:07:03Z Harag joined #lisp 2014-10-04T13:09:54Z Ralt joined #lisp 2014-10-04T13:13:16Z stassats quit (Ping timeout: 260 seconds) 2014-10-04T13:13:53Z shka: ok, what i want to do is numeric computation with common lisp 2014-10-04T13:13:58Z shka: matlab style 2014-10-04T13:14:04Z shka: or sage style 2014-10-04T13:15:14Z shka: common lisp may be not the best language to do such things but it like it more than any other so i'm looking for some lapack-like library 2014-10-04T13:15:24Z shka: *i like it 2014-10-04T13:17:52Z zickzackv quit (Ping timeout: 250 seconds) 2014-10-04T13:18:50Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T13:19:09Z Shinmera: There's cl-blapack, but I haven't used it myself, so I can't say how usable/nice it is. 2014-10-04T13:19:40Z shka: Shinmera: thanks 2014-10-04T13:19:47Z gravicappa joined #lisp 2014-10-04T13:19:57Z TDog quit (Ping timeout: 246 seconds) 2014-10-04T13:19:59Z shka: and if i want to simply ignore performance? 2014-10-04T13:20:48Z shka: ok, i think that i should simply try some packages 2014-10-04T13:21:21Z nonamae_ joined #lisp 2014-10-04T13:21:29Z shka: and hopefully share my opinion with others 2014-10-04T13:22:20Z Ven_ joined #lisp 2014-10-04T13:22:28Z madrik joined #lisp 2014-10-04T13:22:42Z kobain joined #lisp 2014-10-04T13:23:18Z kobain quit (Max SendQ exceeded) 2014-10-04T13:23:36Z kobain joined #lisp 2014-10-04T13:23:40Z Svetlana joined #lisp 2014-10-04T13:24:22Z shka: i will try http://matlisp.sourceforge.net/ 2014-10-04T13:24:30Z shka: see you later all! 2014-10-04T13:24:52Z ndrei quit (Ping timeout: 244 seconds) 2014-10-04T13:25:34Z Svetlana quit (Remote host closed the connection) 2014-10-04T13:26:47Z ehu quit (Ping timeout: 272 seconds) 2014-10-04T13:27:30Z Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-10-04T13:28:15Z Hydan is now known as Hydan` 2014-10-04T13:30:00Z yrk quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-10-04T13:30:03Z madrik quit (Ping timeout: 272 seconds) 2014-10-04T13:34:06Z tkhoa2711 joined #lisp 2014-10-04T13:34:31Z shka quit (Quit: WeeChat 1.0) 2014-10-04T13:40:26Z stassats joined #lisp 2014-10-04T13:42:05Z serichsen quit (Ping timeout: 272 seconds) 2014-10-04T13:50:39Z chase_gr` joined #lisp 2014-10-04T13:53:19Z Karl_Dscc joined #lisp 2014-10-04T13:53:19Z Karl_Dscc is now known as Guest89870 2014-10-04T13:54:15Z jtza8 joined #lisp 2014-10-04T13:54:33Z urandom__ joined #lisp 2014-10-04T13:56:01Z Harag quit (Ping timeout: 272 seconds) 2014-10-04T13:58:54Z zacharias_ joined #lisp 2014-10-04T13:59:38Z zacharias_ is now known as zacharias 2014-10-04T14:10:14Z pnpuff joined #lisp 2014-10-04T14:14:36Z rme joined #lisp 2014-10-04T14:15:10Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T14:20:29Z Davidbrcz quit (Ping timeout: 272 seconds) 2014-10-04T14:20:35Z loke_ quit (Read error: Connection reset by peer) 2014-10-04T14:21:00Z loke_ joined #lisp 2014-10-04T14:24:18Z hardenedapple: How can I check if there's data ready to be read on *standard-input* in slime? 2014-10-04T14:24:56Z stassats: slime doesn't work like that 2014-10-04T14:26:16Z hardenedapple: stassats: What do you mean? (read-line *standard-input*) seems to work fine 2014-10-04T14:26:31Z stassats: it still doesn't work like that 2014-10-04T14:27:19Z hardenedapple: stassats: and I still have no idea what you mean. -- please explain 2014-10-04T14:27:23Z yeticry quit (Ping timeout: 244 seconds) 2014-10-04T14:27:41Z stassats: it doesn't do what you want 2014-10-04T14:27:44Z nell quit (Quit: WeeChat 1.1-dev) 2014-10-04T14:28:08Z stassats: there is no data ready 2014-10-04T14:29:50Z yeticry joined #lisp 2014-10-04T14:31:40Z hardenedapple: Still confused -- If I start a loop in the REPL, and that loop looks to see if there's any data on *standard-input*, are you saying there is no function to do that, or the function call would always tell me there's no data? 2014-10-04T14:31:58Z stassats: there is just never any data available 2014-10-04T14:32:28Z stassats: what is it that you're trying to do? 2014-10-04T14:34:45Z hardenedapple: I want to basically make a telnet connection to an IRC server, but automate PING requests / replies 2014-10-04T14:35:30Z hardenedapple: I was planning on having all messages from the server printed to *standard-output* and have the REPL ttaken up printing/reading from the user 2014-10-04T14:36:00Z hardenedapple: Then I could add some automation by using C-x C-e in the file buffer 2014-10-04T14:36:14Z pnpuff left #lisp 2014-10-04T14:36:50Z hardenedapple: The REPL would just be running a loop, checking if the user has read anything or if the server has sent anything and sending the message from one to the other 2014-10-04T14:44:31Z ndrei joined #lisp 2014-10-04T14:45:35Z stassats: slime is not the best way to make interfaces 2014-10-04T14:45:40Z bcoburn quit (Ping timeout: 260 seconds) 2014-10-04T14:47:47Z joshe: hardenedapple: if you are interested in having the problem solved rather than solving the problem, I have an old perl script which does that 2014-10-04T14:48:11Z hardenedapple: stassats: I guessed not, but this is all about learning, (both lisp and IRC) so I wanted to be able to change the code while using it 2014-10-04T14:48:33Z hardenedapple: joshe: Thanks, but I'm just playing around to learn 2014-10-04T14:48:39Z joshe: sure 2014-10-04T14:49:05Z bcoburn joined #lisp 2014-10-04T14:49:15Z hardenedapple: Otherwise, I'd have used python and taken infinitely less time 2014-10-04T14:50:36Z mutley89 joined #lisp 2014-10-04T14:52:08Z hitecnologys joined #lisp 2014-10-04T14:52:26Z hardenedapple: stassats: Should I just run my code in the terminal and not be able to define new functions while using it then? 2014-10-04T14:52:40Z stassats: that doesn't preclude from defining new functions 2014-10-04T14:53:10Z joshe: also using the terminal does not preclude one from using slime 2014-10-04T14:53:54Z stassats: or you can use multiple threads 2014-10-04T14:54:39Z chase_gr`: does langutils work on sbcl? i've been trying to run it but using (tag "string") returns the error "The value NIL is not of type hash-table." 2014-10-04T14:54:56Z chase_gr`: i loaded it using (ql:quickload "langutils") 2014-10-04T14:56:14Z hardenedapple: stassats: yeah, I know it's *possible*, but that idea only came from thinking slime would give me the functionality without me having to do anything extra (it's the first thing I'm writing in lisp, so I'm keeping it simple) 2014-10-04T14:57:54Z tkhoa2711 joined #lisp 2014-10-04T14:58:04Z MoALTz quit (Quit: Leaving) 2014-10-04T14:58:04Z c107 joined #lisp 2014-10-04T14:58:12Z c107 quit (Changing host) 2014-10-04T14:58:12Z c107 joined #lisp 2014-10-04T14:59:40Z Nizumzen quit (Ping timeout: 260 seconds) 2014-10-04T15:08:09Z teiresias quit (Read error: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number) 2014-10-04T15:12:15Z Nizumzen joined #lisp 2014-10-04T15:12:42Z pjb: hardenedapple: The standard way to do it would be: (progn (loop until (listen *standard-input*)) (read-line)) ; but this just doesn't work in slime: LISTEN on slime streams always returns NIL. 2014-10-04T15:13:05Z therik joined #lisp 2014-10-04T15:13:25Z pjb: hardenedapple: on the other hand, there are FFI emacs->swank and swank->emacs, so you could do call an eval-in-emacs function from the inferior lisp. 2014-10-04T15:13:55Z stassats quit (Ping timeout: 272 seconds) 2014-10-04T15:14:24Z zickzackv joined #lisp 2014-10-04T15:22:27Z ehu joined #lisp 2014-10-04T15:24:51Z innertracks joined #lisp 2014-10-04T15:29:34Z stassats joined #lisp 2014-10-04T15:30:42Z Takumo quit (Ping timeout: 245 seconds) 2014-10-04T15:31:14Z jusss quit (Remote host closed the connection) 2014-10-04T15:33:05Z TDog joined #lisp 2014-10-04T15:33:22Z Takumo joined #lisp 2014-10-04T15:36:08Z Ven_ joined #lisp 2014-10-04T15:36:15Z drdanmaku joined #lisp 2014-10-04T15:36:43Z jtza8 quit (Ping timeout: 272 seconds) 2014-10-04T15:37:42Z Ven_ quit (Client Quit) 2014-10-04T15:41:00Z ndrei quit (Read error: No route to host) 2014-10-04T15:43:02Z zickzackv quit (Ping timeout: 250 seconds) 2014-10-04T15:43:23Z Mon_Ouie joined #lisp 2014-10-04T15:43:31Z Apatheignostic is now known as stoned 2014-10-04T15:43:48Z ndrei joined #lisp 2014-10-04T15:48:53Z funnel_ joined #lisp 2014-10-04T15:49:19Z phao: Hi. Is there any book like "patterns of enterprise applications architecture", but more "lispy"? 2014-10-04T15:49:49Z stassats: lisp eschews "patterns" 2014-10-04T15:50:14Z phao: Yeah, that's pretty much why I was looking for a "lispy" version of that. 2014-10-04T15:50:39Z chase_gr` quit (Ping timeout: 272 seconds) 2014-10-04T15:50:51Z phao: stassats, My issue is that the current techniques I know for building "database applications" are pretty ... bad 2014-10-04T15:50:56Z stassats: http://norvig.com/design-patterns/ 2014-10-04T15:51:06Z phao: I've seen that. 2014-10-04T15:51:36Z phao: The focus here is no on "patterns" 2014-10-04T15:51:55Z phao: is on "enterprise applications", which is just a fancy name for information systems, or database applications, that sort of thing. 2014-10-04T15:51:55Z wasamasa: use the right data structures, paper over the hard bits with simple macros and uh, that's all there is to it? 2014-10-04T15:52:18Z phao: wasamasa, If you're really asking, then I don't know if that's all there is to it. 2014-10-04T15:52:22Z Subfusc quit (Ping timeout: 245 seconds) 2014-10-04T15:52:34Z ndrei quit (Ping timeout: 250 seconds) 2014-10-04T15:53:01Z stassats: think hard, be good to thy neighbour's wife 2014-10-04T15:53:01Z wasamasa: phao: you see, whenever I read code that's solving a problem really well, the first though I have is not "Damn, that's a nice pattern to solve this!" 2014-10-04T15:53:41Z Subfusc joined #lisp 2014-10-04T15:53:48Z Okasu quit (Ping timeout: 260 seconds) 2014-10-04T15:53:53Z wasamasa: phao: the higher level I've seen a language get, the less of those patterns I could spot 2014-10-04T15:54:09Z phao: Again, the focus isn't on "patterns" 2014-10-04T15:54:16Z stassats: so, frameworks? 2014-10-04T15:54:18Z stassats: libraries? 2014-10-04T15:54:26Z wasamasa: people write frameworks in lisp in a few days 2014-10-04T15:54:32Z Shinmera: I want patterns, but also not patterns. 2014-10-04T15:54:39Z wasamasa: then abandon them 2014-10-04T15:54:45Z phao: It's like I said before... 2014-10-04T15:54:53Z phao: I was looking something on building enterprise applications. 2014-10-04T15:54:56Z wasamasa: who knows, maybe they're just doing what feels right to them :P 2014-10-04T15:55:04Z wasamasa: phao: enterprise application writers don't care about that :P 2014-10-04T15:55:07Z Shinmera: What does enterprise even mean 2014-10-04T15:55:08Z phao: That book does it through patterns and OOP. But I wanted something more "lispy". 2014-10-04T15:55:29Z kbtr quit (Ping timeout: 272 seconds) 2014-10-04T15:55:30Z phao: Shinmera, => [12:51] is on "enterprise applications", which is just a fancy name for information systems, or database applications, that sort of thing. 2014-10-04T15:55:43Z wasamasa: phao: all they care about is "Does the code work? Does it need some fixes before it can be shipped? No? Good, let's ship it and call it a day." 2014-10-04T15:55:48Z Shinmera: phao: I still don't know what you mean 2014-10-04T15:55:58Z resttime joined #lisp 2014-10-04T15:56:05Z kbtr_ joined #lisp 2014-10-04T15:56:14Z wasamasa: phao: I've seen it and it can be more or less ugly 2014-10-04T15:56:16Z Shinmera: phao: You just substituted one term that I can't do anything with with multiple terms I can't do anything with 2014-10-04T15:56:22Z stassats: mindless crud? 2014-10-04T15:57:48Z zeitue quit (Ping timeout: 244 seconds) 2014-10-04T15:57:49Z phao: stassats, Sometimes yes, sometimes no. 2014-10-04T15:58:12Z phao: Shinmera, You mean you don't know what a database application is? 2014-10-04T15:58:14Z stassats: there's not enough people doing that kind of thing to crystallize a framework 2014-10-04T15:58:45Z Shinmera: phao: I do know, but I don't know what it means in relation to your question or how knowing that would help me help you. 2014-10-04T15:58:52Z phao: I see. 2014-10-04T15:58:54Z phao: Sorry. 2014-10-04T15:59:27Z mdallastella quit (Ping timeout: 245 seconds) 2014-10-04T15:59:40Z Shinmera: There's plenty of database interface libraries out there as well as a couple ORMs, but I don't think that's what you're asking about. 2014-10-04T15:59:40Z phao: Shinmera, Every time I set up to build a database application, it come out extremely ugly. I was looking for materials teaching common techniques, ideas, etc on doing such a thing. 2014-10-04T16:00:01Z phao: It's as if persistence was this virus that makes everything rot 2014-10-04T16:00:23Z Shinmera: Ah. I don't recall stumbling across such a thing. I'd suggest taking a look at existing software that uses databases and learning from that. 2014-10-04T16:00:39Z phao: Shinmera, Do you have any in mind? 2014-10-04T16:01:24Z phao: I think aspect oriented programming tried to solve that... I don't know how well it worked. 2014-10-04T16:01:42Z Davidbrcz joined #lisp 2014-10-04T16:01:52Z Shinmera: I'm only aware of a couple that I've seen in passing, but I can't come up with the names right now, sorry. 2014-10-04T16:02:00Z phao: ok 2014-10-04T16:02:11Z ndrei joined #lisp 2014-10-04T16:02:18Z Shinmera: Other than that I've written db things of my own but I would not want to put those up as being a good example in technique/style. 2014-10-04T16:02:30Z wasamasa: phao: hell, there are people who hail encapsulating manually written queries in symbols and think this is going to solve the problem of ORM being a black box 2014-10-04T16:02:58Z innertracks quit (Quit: innertracks) 2014-10-04T16:03:00Z phao: wasamasa, ORM is something I really think disturbs more than help 2014-10-04T16:03:12Z phao: In fact, I think trying to solve the problem in an OOP way is the issue. 2014-10-04T16:03:41Z funnel_ quit (Quit: leaving) 2014-10-04T16:05:10Z nell joined #lisp 2014-10-04T16:09:22Z serichsen joined #lisp 2014-10-04T16:10:15Z innertracks joined #lisp 2014-10-04T16:11:32Z serichsen quit (Read error: Connection reset by peer) 2014-10-04T16:12:15Z serichsen joined #lisp 2014-10-04T16:12:57Z lupine quit (Quit: ZNC - http://znc.in) 2014-10-04T16:14:18Z lupine joined #lisp 2014-10-04T16:15:31Z lupine quit (Changing host) 2014-10-04T16:15:31Z lupine joined #lisp 2014-10-04T16:15:48Z funnel_ joined #lisp 2014-10-04T16:15:48Z funnel_ quit (Changing host) 2014-10-04T16:15:48Z funnel_ joined #lisp 2014-10-04T16:17:13Z zeitue joined #lisp 2014-10-04T16:17:16Z jtza8 joined #lisp 2014-10-04T16:18:25Z bgs100 joined #lisp 2014-10-04T16:19:55Z pnpuff joined #lisp 2014-10-04T16:24:51Z innertracks quit (Ping timeout: 272 seconds) 2014-10-04T16:25:43Z phao: Shinmera, Well, I'd not mind look at what you've done. If you care to share.... 2014-10-04T16:26:11Z phao: wasamasa, A lot of the issue is that I can't really identify the problem. 2014-10-04T16:26:32Z pjb: phao: macros are patterns. 2014-10-04T16:27:03Z Shinmera: phao: An application using dbs https://github.com/Shinmera/radiance-reader/blob/master/reader.lisp and a db wrapper https://github.com/Shinmera/radiance/tree/master/drivers/i-sqlite 2014-10-04T16:27:13Z pjb: phao: see: https://groups.google.com/forum/#!msg/comp.lang.lisp/gsQJOGKYUw4/oLLHW0f4Ce4J https://groups.google.com/forum/#!msg/comp.programming/FiNIiSm5cJE/JkF5wa6Ke54J 2014-10-04T16:27:35Z phao: pjb, ok, I'll look. 2014-10-04T16:28:42Z phao: pjb, I don't get though... why are you telling me this? 2014-10-04T16:28:42Z pjb: phao: the pattern is always the same: other programming languages have problems, so they build Rube Goldberg machines to try to solve them, when the problem just doesn't occur in the first place in lisp. 2014-10-04T16:29:12Z pjb: Because there cannot be a whole BOOK on "patterns of enterprise applications architecture" but more lispy. 2014-10-04T16:29:30Z pjb: Things are much simplier with lisp. 2014-10-04T16:30:23Z phao: Maybe common lisp has something special... Dealing with database applications in scheme didn't seem to be any better. 2014-10-04T16:30:43Z phao: My guess is that I just don't know well enough. That's why I was looking for books on it. 2014-10-04T16:30:46Z hitecnologys quit (Quit: hitecnologys) 2014-10-04T16:30:50Z therik quit (Read error: Connection reset by peer) 2014-10-04T16:31:15Z phao: I just mentioned that book because I it's a common one I already know with similar goals. 2014-10-04T16:31:37Z pjb: phao: that said, perhaps more books could be written showing how things are done in lisp. I'm afraid they'd be thiner, but it might interest some public. 2014-10-04T16:32:39Z wasamasa: phao: maybe you need to get better with databases 2014-10-04T16:32:44Z wasamasa: phao: I did for sure :P 2014-10-04T16:33:44Z phao: wasamasa, Well, I've had a sort of standard textbook course on databases, which pretty much means relational databases, sql, relational algebra, relational db design (normalization, functional dependencies), and that sort of thing. 2014-10-04T16:33:57Z teiresias joined #lisp 2014-10-04T16:34:22Z phao: Which is another thing I found strange. A lot of books on databases I've seen seem to focus only on relational databses. 2014-10-04T16:34:25Z ejbs joined #lisp 2014-10-04T16:34:26Z phao: databases* 2014-10-04T16:36:41Z attila_lendvai joined #lisp 2014-10-04T16:36:41Z attila_lendvai quit (Changing host) 2014-10-04T16:36:41Z attila_lendvai joined #lisp 2014-10-04T16:36:41Z attila_lendvai is now known as Guest23726 2014-10-04T16:36:58Z WeirdEnthusiast quit (Quit: EliteBNC free bnc service - http://elitebnc.org - be a part of the Elite!) 2014-10-04T16:37:17Z phao: Shinmera, it seems you're building some sort of query builder too... is that right? 2014-10-04T16:38:14Z Shinmera: phao: Part of the database interface specifies a query abstraction, yes. 2014-10-04T16:39:29Z Shinmera: phao: I don't know if my examples are good for your use case since they need to conform to a specification that isn't coupled to a specific database, so sacrifices had to be made. 2014-10-04T16:39:46Z hiroakip joined #lisp 2014-10-04T16:39:49Z Shinmera: phao: And thus my things will look rather different than they might if you could just settle for one specific implementation. 2014-10-04T16:40:43Z pnpuff left #lisp 2014-10-04T16:40:55Z funnel_ quit (Quit: leaving) 2014-10-04T16:49:18Z WeirdEnthusiast joined #lisp 2014-10-04T16:53:12Z Guest23726 quit (Ping timeout: 245 seconds) 2014-10-04T16:56:34Z tkhoa2711 quit (Quit: tkhoa2711) 2014-10-04T16:57:18Z tkhoa2711 joined #lisp 2014-10-04T17:00:49Z funnel_ joined #lisp 2014-10-04T17:01:30Z tkhoa2711 quit (Ping timeout: 246 seconds) 2014-10-04T17:02:14Z MutSbeta quit (Remote host closed the connection) 2014-10-04T17:04:13Z chase_gr` joined #lisp 2014-10-04T17:05:10Z innertracks joined #lisp 2014-10-04T17:05:39Z TDog quit (Ping timeout: 245 seconds) 2014-10-04T17:07:38Z MutSbeta joined #lisp 2014-10-04T17:14:04Z chase_gr` quit (Ping timeout: 260 seconds) 2014-10-04T17:18:48Z DTSCode quit (Ping timeout: 250 seconds) 2014-10-04T17:22:52Z angavrilov quit (Remote host closed the connection) 2014-10-04T17:24:24Z ndrei quit (Ping timeout: 272 seconds) 2014-10-04T17:25:44Z gniourf quit (Read error: Connection reset by peer) 2014-10-04T17:25:55Z DTSCode joined #lisp 2014-10-04T17:27:30Z Ven_ joined #lisp 2014-10-04T17:28:27Z gniourf joined #lisp 2014-10-04T17:31:21Z stassats quit (Ping timeout: 272 seconds) 2014-10-04T17:38:35Z funnel_ quit (Quit: leaving) 2014-10-04T17:38:55Z nug700 joined #lisp 2014-10-04T17:39:34Z beach left #lisp 2014-10-04T17:39:39Z serichsen quit (Ping timeout: 246 seconds) 2014-10-04T17:41:17Z funnel_ joined #lisp 2014-10-04T17:43:48Z funnel_ quit (Client Quit) 2014-10-04T17:44:12Z kpreid quit (Read error: Connection reset by peer) 2014-10-04T17:44:51Z kpreid joined #lisp 2014-10-04T17:44:55Z phao: pjb, do you use lisp at work? 2014-10-04T17:45:01Z phao: Shinmera, Right. 2014-10-04T17:45:32Z phao: Shinmera, I didn't look fully into the code, but that is code which provides a means to access a relational DB through SQL. Right? 2014-10-04T17:45:40Z Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-10-04T17:48:25Z Shinmera: phao: The interface does not expose SQL, but that specific implementation I linked you translates to SQL. 2014-10-04T17:48:51Z phao: Right. And you did this as a hobby or you really needed it? 2014-10-04T17:49:05Z Shinmera: I don't have a job if that's what you mean. 2014-10-04T17:49:28Z phao: Hehe, It wasn't what I meant. 2014-10-04T17:50:02Z phao: I was just wondering if you really needed it or if you could, for example, just have used a library. 2014-10-04T17:50:53Z Shinmera: I needed a solution that integrated well into the ecosystem of my framework, which has some specific requirements and goals. 2014-10-04T17:51:17Z phao: I see. 2014-10-04T17:51:23Z Shinmera: There are more general solutions that do similar things as what I did, though. 2014-10-04T17:51:37Z phao: Is your framework for web development? 2014-10-04T17:51:43Z Shinmera: It is. 2014-10-04T17:51:50Z phao: I see you have some web related projects in there, like the CSS aid. 2014-10-04T17:52:17Z Shinmera: Most of my work is in some manner web related. 2014-10-04T17:55:47Z phao: Cool 2014-10-04T17:56:49Z phao: Your painting program seems really nice too. 2014-10-04T17:56:59Z Shinmera: Eh, it's a thing. There's plenty more interesting things than web stuff like -- yes, that. 2014-10-04T17:57:01Z serichsen joined #lisp 2014-10-04T17:57:35Z phao: Hehehe 2014-10-04T17:57:38Z Shinmera: I mostly work on web things because there's some external pressure for it and I've grown at least somewhat confident. 2014-10-04T17:57:49Z funnel_ joined #lisp 2014-10-04T17:58:12Z sablib joined #lisp 2014-10-04T17:58:37Z funnel quit (Quit: leaving) 2014-10-04T18:01:48Z simulacrum quit (Remote host closed the connection) 2014-10-04T18:02:43Z knosys1 joined #lisp 2014-10-04T18:04:52Z Ven_ joined #lisp 2014-10-04T18:05:12Z knosys quit (Ping timeout: 245 seconds) 2014-10-04T18:05:35Z svetlyak40wt joined #lisp 2014-10-04T18:10:32Z ndrei joined #lisp 2014-10-04T18:10:38Z Nizumzen quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2014-10-04T18:14:58Z innertracks quit (Ping timeout: 272 seconds) 2014-10-04T18:15:36Z thierrygar_ joined #lisp 2014-10-04T18:18:38Z edgar-rft quit (Quit: lifeform experiment closed by memory disaster) 2014-10-04T18:20:47Z funnel_ is now known as funnel 2014-10-04T18:27:00Z thierrygar_ quit (Quit: thierrygar_) 2014-10-04T18:27:03Z Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-10-04T18:28:38Z thierrygar joined #lisp 2014-10-04T18:32:15Z pjb: phao: I currently do. 2014-10-04T18:32:19Z thierrygar quit (Client Quit) 2014-10-04T18:32:40Z lambda joined #lisp 2014-10-04T18:32:41Z thierrygar joined #lisp 2014-10-04T18:33:18Z vlnx quit (Read error: Connection reset by peer) 2014-10-04T18:34:20Z vlnx joined #lisp 2014-10-04T18:35:47Z thierrygar quit (Client Quit) 2014-10-04T18:37:54Z thierrygar joined #lisp 2014-10-04T18:40:26Z tadni joined #lisp 2014-10-04T18:45:25Z MrWoohoo quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-10-04T18:45:50Z knosys1 quit (Quit: WeeChat 0.4.2) 2014-10-04T18:46:03Z knosys joined #lisp 2014-10-04T18:46:03Z vaporatorius joined #lisp 2014-10-04T18:46:05Z denisrum quit (Ping timeout: 272 seconds) 2014-10-04T18:47:52Z chase_gr` joined #lisp 2014-10-04T18:52:52Z wasamasa is now known as {{{ 2014-10-04T18:54:09Z {{{ is now known as }}} 2014-10-04T18:54:17Z thierrygar quit (Quit: thierrygar) 2014-10-04T18:54:52Z }}} is now known as wasamasa 2014-10-04T18:55:52Z nonamae_ quit (Ping timeout: 250 seconds) 2014-10-04T18:56:28Z MrWoohoo joined #lisp 2014-10-04T18:56:51Z jtza8 quit (Ping timeout: 272 seconds) 2014-10-04T18:57:03Z MrWoohoo quit (Max SendQ exceeded) 2014-10-04T18:57:57Z biblio joined #lisp 2014-10-04T18:59:55Z biblio quit (Client Quit) 2014-10-04T19:02:39Z pjb: - 2014-10-04T19:02:59Z prxq joined #lisp 2014-10-04T19:03:16Z Kabaka quit (Ping timeout: 260 seconds) 2014-10-04T19:03:53Z bphile joined #lisp 2014-10-04T19:12:24Z bphile quit (Remote host closed the connection) 2014-10-04T19:12:44Z attila_lendvai joined #lisp 2014-10-04T19:13:45Z matko joined #lisp 2014-10-04T19:14:05Z bphile joined #lisp 2014-10-04T19:14:50Z nell quit (Quit: WeeChat 1.1-dev) 2014-10-04T19:17:04Z aftershave quit (Remote host closed the connection) 2014-10-04T19:17:18Z bphile quit (Remote host closed the connection) 2014-10-04T19:19:27Z Davidbrcz quit (Ping timeout: 245 seconds) 2014-10-04T19:20:31Z Kabaka joined #lisp 2014-10-04T19:22:09Z zickzackv joined #lisp 2014-10-04T19:22:16Z bphile joined #lisp 2014-10-04T19:22:19Z nonamae_ joined #lisp 2014-10-04T19:24:52Z kuzy000 quit (Ping timeout: 240 seconds) 2014-10-04T19:25:16Z kuzy000 joined #lisp 2014-10-04T19:26:29Z innertracks joined #lisp 2014-10-04T19:31:22Z attila_lendvai quit (Ping timeout: 240 seconds) 2014-10-04T19:31:38Z attila_lendvai joined #lisp 2014-10-04T19:31:39Z attila_lendvai quit (Changing host) 2014-10-04T19:31:39Z attila_lendvai joined #lisp 2014-10-04T19:31:41Z serichsen quit (Ping timeout: 272 seconds) 2014-10-04T19:31:48Z Guest89870 quit (Remote host closed the connection) 2014-10-04T19:32:10Z serichsen joined #lisp 2014-10-04T19:32:45Z Patzy quit (Ping timeout: 260 seconds) 2014-10-04T19:33:20Z Patzy joined #lisp 2014-10-04T19:36:45Z gravicappa quit (Ping timeout: 272 seconds) 2014-10-04T19:36:50Z chase_gr` left #lisp 2014-10-04T19:39:58Z defaultxr joined #lisp 2014-10-04T19:41:49Z serichsen quit (Ping timeout: 272 seconds) 2014-10-04T19:44:55Z rme quit (Quit: rme) 2014-10-04T19:46:53Z attila_lendvai quit (Ping timeout: 272 seconds) 2014-10-04T19:50:59Z Shinmera- joined #lisp 2014-10-04T19:51:08Z josteink joined #lisp 2014-10-04T19:51:32Z rme joined #lisp 2014-10-04T19:52:38Z Shinmera quit (Quit: しつれいしなければならないんです。) 2014-10-04T19:54:42Z MutSbeta quit (Quit: Leaving.) 2014-10-04T19:58:43Z serichsen joined #lisp 2014-10-04T19:59:02Z serichsen quit (Client Quit) 2014-10-04T19:59:45Z kcj joined #lisp 2014-10-04T20:01:33Z Shinmera- is now known as Shinmera 2014-10-04T20:02:52Z jegaxd26 quit (Ping timeout: 240 seconds) 2014-10-04T20:03:23Z Adlai quit (Quit: WeeChat 0.4.3) 2014-10-04T20:06:55Z innertracks quit (Ping timeout: 272 seconds) 2014-10-04T20:16:06Z svetlyak40wt quit (Remote host closed the connection) 2014-10-04T20:17:10Z Shinmera- joined #lisp 2014-10-04T20:20:14Z Shinmera quit (Ping timeout: 258 seconds) 2014-10-04T20:20:56Z mvilleneuve quit (Quit: This computer has gone to sleep) 2014-10-04T20:22:26Z phao: Hi. I'm solving an exercise here to implement a cond-like macro and I came up with this => http://paste.ubuntu.com/8495194/ 2014-10-04T20:23:23Z phao: I'm interested in transforming this into an iterative form by having a bunch of when's one after the other. But I'd like to "terminate" at the end of the first valid when. 2014-10-04T20:24:15Z phao: Any tips on how to do that? In scheme I'd use call/cc, but that seems like an overkill here, specially because I think I've read about return-ish statements in CL 2014-10-04T20:24:22Z eudoxia joined #lisp 2014-10-04T20:24:48Z eudoxia: the thing about lisp and patterns is, patterns are what you want to avoid 2014-10-04T20:24:53Z eudoxia: you want to abstract patterns away 2014-10-04T20:24:55Z H4ns: (block nil (when ... (return))) 2014-10-04T20:25:00Z eudoxia: and lisp just gives you the best tools for those abstractions 2014-10-04T20:25:04Z phao: H4ns, Thanks =) 2014-10-04T20:25:14Z eudoxia: or, as rich hickey put it: design patterns are a language smell 2014-10-04T20:25:37Z phao: eudoxia, Rich Hickey's talks are pretty interesting =) 2014-10-04T20:27:23Z gjvc: eudoxia: do you have a citation? I would like to read that in context. 2014-10-04T20:27:58Z gjvc: (not disagreeing or anything, just would like the wider perspective) 2014-10-04T20:28:20Z eudoxia: i think it was quoted in a paper somewhere 2014-10-04T20:28:25Z gjvc: ok 2014-10-04T20:28:25Z eudoxia: actually i think it was an ELS paper 2014-10-04T20:28:34Z gjvc: will google 2014-10-04T20:28:41Z zacharias quit (Ping timeout: 272 seconds) 2014-10-04T20:28:52Z phao: H4ns, worked like a charm =D 2014-10-04T20:29:11Z phao: http://paste.ubuntu.com/8495249/ 2014-10-04T20:29:44Z phao: gjvc, Rob pike also said something like that 2014-10-04T20:29:53Z phao: gjvc, Let me see if I can find the link for you 2014-10-04T20:30:01Z H4ns: phao: thinking about it, you really don't want to use block nil, but rather use a gensym and return-from 2014-10-04T20:30:20Z zickzackv quit (Ping timeout: 250 seconds) 2014-10-04T20:30:25Z phao: Ok, but why is that H4ns ? 2014-10-04T20:30:30Z H4ns: phao: otherwise you'll make it impossible for your users to escape from your cond using an anonymous block. 2014-10-04T20:30:33Z Hache_ joined #lisp 2014-10-04T20:30:44Z gjvc: i am a rob pike fan 2014-10-04T20:30:47Z phao: I see. I surely didn't think of that. 2014-10-04T20:30:50Z phao: gjvc, https://www.youtube.com/watch?v=5kj5ApnhPAE 2014-10-04T20:30:58Z H4ns: phao: pitfalls of macro development :) 2014-10-04T20:31:15Z gjvc: phao, thank you. watching. 2014-10-04T20:31:23Z phao: H4ns, I'll get the hang of it over time, hopefully. 2014-10-04T20:31:38Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-10-04T20:31:48Z phao: H4ns, I came from scheme SICP, little schemer, mostly sort of "purely theoretical simple scheme" 2014-10-04T20:31:57Z H4ns: phao: sure. over time, you'll find fewer opportunities where you really want a macro. 2014-10-04T20:32:33Z phao: H4ns, I don't think I understand why you said this last sentence... 2014-10-04T20:32:49Z phao: Are you saying that it's often confused when macros are need and when they're not? 2014-10-04T20:33:34Z phao: gjvc, the speech's name is really good =) 2014-10-04T20:33:51Z H4ns: phao: i am saying that macros, while useful, are a powerful tool with many pitfalls and thus should be used when they're really required. which is less often than one might think from the hype that they get. 2014-10-04T20:34:06Z phao: I see. 2014-10-04T20:35:39Z eudoxia started out writing tons of macros, and now writes a lot less, but still plenty 2014-10-04T20:35:47Z eudoxia: some projects are all macros, some have no macros 2014-10-04T20:36:10Z H4ns: in our current project, we have some 1.500 functions vs. some 150 macros 2014-10-04T20:36:36Z phao: gjvc, "If you have to foo that often, someone is not fooing right." 2014-10-04T20:36:44Z phao: H4ns, That seems like a lot, isn't it? 2014-10-04T20:37:09Z phao: Or not? 2014-10-04T20:37:12Z H4ns: yes, more that i would have expected 2014-10-04T20:37:16Z H4ns: gotta run 2014-10-04T20:37:25Z Bicyclidine joined #lisp 2014-10-04T20:37:33Z phao: thanks for helping 2014-10-04T20:38:50Z gjvc: "patterns are evidence of a failure in your notation" 2014-10-04T20:39:04Z gjvc: phao: thank you for pointing me to this 2014-10-04T20:39:17Z phao: gjvc, yep =) no problems 2014-10-04T20:40:37Z serichsen joined #lisp 2014-10-04T20:40:42Z serichsen: Good evening! 2014-10-04T20:40:43Z gjvc: "presumably there's a non-boolean dot true somewhere and we don't want to get confused" <- solid gold 2014-10-04T20:41:39Z phao: Hahahaha 2014-10-04T20:43:08Z eazar001 quit (Remote host closed the connection) 2014-10-04T20:44:21Z eudoxia quit (Quit: Lost terminal) 2014-10-04T20:46:12Z eazar001 joined #lisp 2014-10-04T20:46:51Z nell joined #lisp 2014-10-04T20:48:40Z lambda quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-10-04T20:55:49Z eazar001 quit (Quit: WeeChat 1.0.1) 2014-10-04T20:57:59Z `JRG joined #lisp 2014-10-04T20:58:56Z hiroakip quit (Ping timeout: 250 seconds) 2014-10-04T21:00:12Z knosys quit (Ping timeout: 246 seconds) 2014-10-04T21:00:29Z Bicyclidine quit (Ping timeout: 260 seconds) 2014-10-04T21:05:14Z Bicyclidine joined #lisp 2014-10-04T21:05:35Z hardenedapple quit (Quit: WeeChat 1.0.1) 2014-10-04T21:05:48Z eazar001 joined #lisp 2014-10-04T21:08:00Z attila_lendvai joined #lisp 2014-10-04T21:08:12Z attila_lendvai quit (Changing host) 2014-10-04T21:08:12Z attila_lendvai joined #lisp 2014-10-04T21:10:43Z `JRG quit (Ping timeout: 246 seconds) 2014-10-04T21:13:53Z sablib left #lisp 2014-10-04T21:17:35Z attila_lendvai1 joined #lisp 2014-10-04T21:17:35Z attila_lendvai quit (Disconnected by services) 2014-10-04T21:17:36Z attila_lendvai1 quit (Changing host) 2014-10-04T21:17:36Z attila_lendvai1 joined #lisp 2014-10-04T21:19:26Z attila_lendvai1 quit (Client Quit) 2014-10-04T21:24:11Z DTSCode quit (Ping timeout: 272 seconds) 2014-10-04T21:29:02Z kuzy000 quit (Ping timeout: 245 seconds) 2014-10-04T21:33:27Z LiamH joined #lisp 2014-10-04T21:37:44Z Kabaka quit (Ping timeout: 272 seconds) 2014-10-04T21:41:22Z askatasuna joined #lisp 2014-10-04T21:41:53Z Kabaka joined #lisp 2014-10-04T21:43:36Z fridim__ quit (Ping timeout: 246 seconds) 2014-10-04T21:46:24Z ehu quit (Ping timeout: 246 seconds) 2014-10-04T21:54:57Z Beetny joined #lisp 2014-10-04T21:56:08Z prxq quit (Ping timeout: 250 seconds) 2014-10-04T22:01:07Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2014-10-04T22:03:25Z k-stz quit (Remote host closed the connection) 2014-10-04T22:05:49Z mrSpec quit (Read error: Connection reset by peer) 2014-10-04T22:05:58Z drmeister: In optimizing CL compilers, do objects like CONSes ever end up on the stack or are they always stored on the heap? 2014-10-04T22:06:18Z Nizumzen joined #lisp 2014-10-04T22:09:32Z rme quit (Quit: rme) 2014-10-04T22:09:39Z kpreid: cl:dynamic-extent is the hint that you can stack allocate stuff 2014-10-04T22:10:10Z kpreid: sbcl supports it: http://www.sbcl.org/manual/#Dynamic_002dextent-allocation 2014-10-04T22:11:24Z kpreid: for conses, arrays, closures, and structures 2014-10-04T22:11:39Z Ven_ joined #lisp 2014-10-04T22:12:54Z drmeister: But this isn't typical behavior of the compiler. You need to explicitly state that a variable has dynamic-extent. 2014-10-04T22:13:17Z ggole: Escape analysis can let you do that. 2014-10-04T22:13:52Z ggole: But a good generational gc can make short-lived heap objects remarkably cheap, so it isn't necessarily a huge win 2014-10-04T22:14:02Z drmeister: I'll have to ask beach more about this. 2014-10-04T22:14:26Z drmeister: Right, short lived objects are dealt with by the garbage collector. 2014-10-04T22:15:04Z ggole: If you are more interested in the analysis, the Orbit thesis goes into the subject in some detail 2014-10-04T22:15:29Z ggole: (In the specific context of stack allocating closures, but the idea also works for regular structures.) 2014-10-04T22:16:32Z mishoo quit (Ping timeout: 245 seconds) 2014-10-04T22:20:51Z drmeister: I was having a discussion with a friend of mine about the nature of the optimizations that Clasp needs to improve performance. The question came up whether the bindings to objects are moving onto the stack or the objects themselves must move onto the stack. 2014-10-04T22:21:23Z drmeister: What is a stack-allocated closure? Isn't it a list of pointers to objects on the heap? 2014-10-04T22:21:38Z phax joined #lisp 2014-10-04T22:21:38Z Davidbrcz joined #lisp 2014-10-04T22:22:45Z ggole: It's pretty much the same data as any other closure, except on the stack. 2014-10-04T22:24:27Z troydm quit (Quit: What is hope? That all of your wishes and all of your dreams come true? (C) Rau Le Creuset) 2014-10-04T22:25:17Z troydm joined #lisp 2014-10-04T22:25:26Z troydm quit (Remote host closed the connection) 2014-10-04T22:25:50Z mvilleneuve joined #lisp 2014-10-04T22:26:21Z troydm joined #lisp 2014-10-04T22:30:00Z zeitue quit (Ping timeout: 260 seconds) 2014-10-04T22:31:12Z troydm quit (Client Quit) 2014-10-04T22:31:28Z troydm joined #lisp 2014-10-04T22:31:37Z ggole quit 2014-10-04T22:32:23Z zacharias joined #lisp 2014-10-04T22:34:06Z hiyosi quit (Ping timeout: 272 seconds) 2014-10-04T22:38:06Z cmack joined #lisp 2014-10-04T22:39:16Z mvilleneuve quit (Quit: This computer has gone to sleep) 2014-10-04T22:40:46Z cmack` joined #lisp 2014-10-04T22:42:43Z cmack quit (Ping timeout: 272 seconds) 2014-10-04T22:43:26Z kpreid: since a stack-allocated closure is necessarily only called from known sites, you could avoid storing a code pointer at all, only the variables. don't know if that's actually done. 2014-10-04T22:43:45Z zeitue joined #lisp 2014-10-04T22:44:13Z kpreid: wait, no, (funcall (if x dyn-closure-1 dyn-closure-2)) is still dynamic 2014-10-04T22:45:18Z Shinmera- quit (Quit: しつれいしなければならないんです。) 2014-10-04T22:49:17Z Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-10-04T22:53:20Z askatasuna quit (Quit: WeeChat 1.0.1) 2014-10-04T22:53:40Z ejbs quit (Remote host closed the connection) 2014-10-04T22:55:47Z askatasuna joined #lisp 2014-10-04T22:59:37Z jainex joined #lisp 2014-10-04T23:00:02Z hiyosi joined #lisp 2014-10-04T23:00:03Z Davidbrcz quit (Ping timeout: 272 seconds) 2014-10-04T23:00:16Z jainex: lisp is awesome 2014-10-04T23:00:36Z MutSbeta joined #lisp 2014-10-04T23:03:01Z askatasuna quit (Quit: WeeChat 1.0.1) 2014-10-04T23:03:08Z phao: H4ns, http://paste.ubuntu.com/8496101/ like this? 2014-10-04T23:05:00Z hiyosi quit (Ping timeout: 260 seconds) 2014-10-04T23:05:07Z atgreen joined #lisp 2014-10-04T23:10:32Z atgreen: ? why can't I find common-lisp-stat in quicklisp? It's listed as an updated package in the Aug 2014 dist. 2014-10-04T23:10:41Z atgreen: Xach? 2014-10-04T23:11:07Z innertracks joined #lisp 2014-10-04T23:15:13Z H4ns: phao: looks good. although you'll probably want to return something other than nil 2014-10-04T23:15:27Z MrWoohoo joined #lisp 2014-10-04T23:15:48Z phao: Ohhh that's a sneaky bug =) 2014-10-04T23:17:57Z knosys joined #lisp 2014-10-04T23:24:19Z [1]cneira joined #lisp 2014-10-04T23:26:15Z tadni quit (Remote host closed the connection) 2014-10-04T23:26:56Z cneira quit (Ping timeout: 260 seconds) 2014-10-04T23:26:56Z [1]cneira is now known as cneira 2014-10-04T23:28:41Z knosys quit (Quit: WeeChat 0.4.2) 2014-10-04T23:28:53Z paul0` joined #lisp 2014-10-04T23:30:46Z vaporatorius quit (Remote host closed the connection) 2014-10-04T23:30:49Z tadni joined #lisp 2014-10-04T23:31:29Z tadni` joined #lisp 2014-10-04T23:32:05Z cyphase_ is now known as cyphase 2014-10-04T23:32:17Z paul0 quit (Ping timeout: 245 seconds) 2014-10-04T23:34:01Z cmack` quit (Ping timeout: 260 seconds) 2014-10-04T23:36:10Z Adlai joined #lisp 2014-10-04T23:39:30Z jainex left #lisp 2014-10-04T23:45:45Z tadni` quit (Remote host closed the connection) 2014-10-04T23:45:47Z tadni quit (Remote host closed the connection) 2014-10-04T23:47:05Z c107 quit (Remote host closed the connection) 2014-10-04T23:50:32Z Hexstream joined #lisp 2014-10-04T23:51:02Z tadni joined #lisp 2014-10-04T23:51:26Z Hexstream: Xach: Hum, lisptips.com appears to be down? 2014-10-04T23:56:25Z yuv- quit (Ping timeout: 260 seconds) 2014-10-04T23:57:00Z nonamae_ quit (Read error: Connection reset by peer) 2014-10-04T23:57:16Z tadni quit (Remote host closed the connection) 2014-10-04T23:59:06Z yuv- joined #lisp