2014-09-28T00:00:10Z paul0 joined #lisp 2014-09-28T00:00:59Z zacts: drmeister_: Clasp is really looking neat 2014-09-28T00:03:44Z paul0 quit (Client Quit) 2014-09-28T00:05:30Z paul0 joined #lisp 2014-09-28T00:08:11Z Jesin quit (Ping timeout: 258 seconds) 2014-09-28T00:08:54Z CrazyEddy joined #lisp 2014-09-28T00:08:59Z oudeis quit (Quit: This computer has gone to sleep) 2014-09-28T00:09:40Z ilhami quit (Quit: Nettalk6 - www.ntalk.de) 2014-09-28T00:10:32Z drmeister_: zacts: Thank you! 2014-09-28T00:14:40Z paul0 quit (Remote host closed the connection) 2014-09-28T00:15:19Z Jesin joined #lisp 2014-09-28T00:17:42Z freaksken quit (Ping timeout: 245 seconds) 2014-09-28T00:18:04Z paul0 joined #lisp 2014-09-28T00:22:34Z Kenjin joined #lisp 2014-09-28T00:25:08Z drmeister_: I think I have the build system sorted out. 2014-09-28T00:26:52Z Kenjin quit (Ping timeout: 240 seconds) 2014-09-28T00:27:22Z phax joined #lisp 2014-09-28T00:28:55Z drmeister_: Time to "make really-clean" everything and rebuild from scratch. 2014-09-28T00:30:12Z zRecursive joined #lisp 2014-09-28T00:31:37Z zeebrah joined #lisp 2014-09-28T00:33:20Z bcoburn quit (Remote host closed the connection) 2014-09-28T00:35:00Z kanru` joined #lisp 2014-09-28T00:38:30Z jusss joined #lisp 2014-09-28T00:43:27Z stassats quit (Ping timeout: 258 seconds) 2014-09-28T00:43:29Z InvalidCo: heh 2014-09-28T00:43:34Z InvalidCo: watch out, emacs 2014-09-28T00:43:55Z InvalidCo: I added a way to insert gui elements into the repl flow 2014-09-28T00:44:09Z InvalidCo: next: write lisp editor which is summoned in the repl 2014-09-28T00:44:17Z InvalidCo: probably need to write some floating window code, too 2014-09-28T00:45:09Z InvalidCo: basically, when you write (make-instance 'dial :variable '*global-val*) 2014-09-28T00:45:15Z InvalidCo: a gui dial appears 2014-09-28T00:45:18Z InvalidCo: amidst all the output 2014-09-28T00:45:35Z InvalidCo: and then when you slide it it sets the value of *global-val* 2014-09-28T00:46:47Z InvalidCo: hmm 2014-09-28T00:46:56Z InvalidCo: I wonder if qt would allow me to do kind of a html-float 2014-09-28T00:47:11Z InvalidCo: it'd be nice to have the stdout going around a smaller window 2014-09-28T00:47:13Z InvalidCo: 8) 2014-09-28T00:50:54Z urandom__ quit (Quit: Konversation terminated!) 2014-09-28T00:51:43Z nyef: InvalidCo: So... you're reinventing CLIM? 2014-09-28T00:54:14Z InvalidCo: nyef: kind of 2014-09-28T00:54:23Z InvalidCo: I just found clim a bit too...emacsy 2014-09-28T01:02:23Z oudeis joined #lisp 2014-09-28T01:02:35Z InvalidCo: besides, the motif look is kind of off-putting 2014-09-28T01:02:57Z InvalidCo: I'm thinking of using qt stylesheets to give this kind of a 60's vibe 2014-09-28T01:03:32Z InvalidCo: animated plasma background and such 2014-09-28T01:03:46Z jusss quit (Remote host closed the connection) 2014-09-28T01:04:06Z InvalidCo: paisley 2014-09-28T01:06:22Z nyef: You, ah... realize that the "motif look", as you put it, is supposed to be able to be replaced, right? 2014-09-28T01:07:30Z InvalidCo: ah, I forgot to exaggerate more 2014-09-28T01:07:32Z InvalidCo: my bad 2014-09-28T01:08:05Z InvalidCo: but, on a more serious note, mcclim seems unfortunately a bit dead a project 2014-09-28T01:08:12Z nyef: Yes, there is that. 2014-09-28T01:08:26Z nyef: And I still haven't figured out how CLIM is really supposed to work. 2014-09-28T01:09:39Z fortitude: nyef: there's a good paper on it, "A Guided Tour of CLIM, Common Interface Manager" 2014-09-28T01:09:39Z InvalidCo: mm 2014-09-28T01:09:43Z InvalidCo: I tried once 2014-09-28T01:09:45Z InvalidCo: or twice 2014-09-28T01:10:08Z fortitude: covers most of it, but I still found stream output to a screen to be weird 2014-09-28T01:10:17Z nyef: fortitude: It's been a while, but I expect that I've read it. And the CLIM II spec several times over. 2014-09-28T01:10:44Z nyef: The bit that's currently giving me fits is event handling for multiple panes. 2014-09-28T01:11:32Z fortitude: nyef: I never got that far, I got stuck around the "where is this going to go when I output it?" phase 2014-09-28T01:12:37Z nyef: Oddly enough, stream output for GUI apps actually makes a certain amount of sense to me. 2014-09-28T01:12:47Z JuanDaugherty quit (Ping timeout: 245 seconds) 2014-09-28T01:13:12Z fortitude: seems like there's a fair amount of tension between a linear stream and 2d output space 2014-09-28T01:13:25Z fortitude: it works pretty well when you're e.g. inserting items in a stack 2014-09-28T01:14:39Z nyef: Tension between a linear stream and 2d output space? WTF? Your terminal streams ALREADY output to a 2d space. 2014-09-28T01:16:38Z fortitude: yes, but there's a pretty clear order there 2014-09-28T01:18:10Z ltbarcly joined #lisp 2014-09-28T01:18:32Z nyef: That's just it: For the most part, CLIM output streams behave like a normal terminal with a REPL. 2014-09-28T01:18:43Z nyef: Everything else is layered on top of that abstraction. 2014-09-28T01:19:31Z fortitude: right, I just recall being unable to put some text where I needed it to go with that model 2014-09-28T01:19:44Z fortitude: may very well have been a problem with the programmer rather than the library, but still 2014-09-28T01:19:56Z ltbarcly quit (Client Quit) 2014-09-28T01:20:09Z CrazyEddy quit (Ping timeout: 272 seconds) 2014-09-28T01:20:31Z nyef: Not that McCLIM is that stable, well-documented, well-maintained, and so on... 2014-09-28T01:24:54Z fortitude: I was going to poke at commonqt and qt5, but apparently get smoke* installed is way more complicated than you'd think 2014-09-28T01:25:11Z InvalidCo: mm 2014-09-28T01:25:23Z InvalidCo: which os/distro etc? 2014-09-28T01:25:42Z InvalidCo: I got it working on a debian-derivative relatively painlessly 2014-09-28T01:25:47Z fortitude: windows, but at this point I don't think it matters much 2014-09-28T01:25:53Z InvalidCo: heh 2014-09-28T01:25:58Z fortitude: since the smokegen repo isn't even accessible 2014-09-28T01:26:06Z InvalidCo: oh :o 2014-09-28T01:26:23Z fortitude: (it is, it's just that web access it broken so you have to url-hack to get it) 2014-09-28T01:29:22Z CrazyEddy joined #lisp 2014-09-28T01:34:25Z TomRS` joined #lisp 2014-09-28T01:35:39Z ltbarcly joined #lisp 2014-09-28T01:36:04Z TomRS quit (Ping timeout: 250 seconds) 2014-09-28T01:38:05Z pecg joined #lisp 2014-09-28T01:39:03Z innertracks joined #lisp 2014-09-28T01:41:42Z zeebrah quit (Ping timeout: 250 seconds) 2014-09-28T01:46:06Z bcoburn joined #lisp 2014-09-28T01:48:37Z ltbarcly quit (Quit: Computer has gone to sleep.) 2014-09-28T01:51:32Z TomRS` quit (Ping timeout: 245 seconds) 2014-09-28T01:53:23Z Karl_Dscc joined #lisp 2014-09-28T01:53:46Z klltkr joined #lisp 2014-09-28T01:59:06Z jeremyheiler quit (Quit: Computer has gone to sleep.) 2014-09-28T02:02:01Z jeremyheiler joined #lisp 2014-09-28T02:06:07Z phax quit (Quit: Leaving) 2014-09-28T02:06:47Z varjag_ quit (Quit: Connection closed for inactivity) 2014-09-28T02:16:07Z kanru` quit (Ping timeout: 245 seconds) 2014-09-28T02:17:39Z baotiao joined #lisp 2014-09-28T02:20:22Z ehaliewicz joined #lisp 2014-09-28T02:21:33Z hiyosi quit (Ping timeout: 260 seconds) 2014-09-28T02:35:52Z Vivitron quit (Ping timeout: 250 seconds) 2014-09-28T02:38:03Z sz0 quit 2014-09-28T02:39:04Z sword`` joined #lisp 2014-09-28T02:41:40Z dzieglersf joined #lisp 2014-09-28T02:44:51Z Karl_Dscc quit (Remote host closed the connection) 2014-09-28T02:47:50Z hiyosi joined #lisp 2014-09-28T02:48:04Z DrCode quit (Remote host closed the connection) 2014-09-28T02:48:34Z dzieglersf left #lisp 2014-09-28T02:50:15Z normanrichards joined #lisp 2014-09-28T02:52:02Z DrCode joined #lisp 2014-09-28T02:52:22Z hiyosi quit (Ping timeout: 240 seconds) 2014-09-28T02:54:01Z klltkr quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-09-28T02:54:18Z rainbyte joined #lisp 2014-09-28T02:59:34Z bege_ quit (Quit: leaving) 2014-09-28T03:02:11Z rainbyte quit (Quit: Leaving) 2014-09-28T03:02:32Z rainbyte joined #lisp 2014-09-28T03:02:58Z ehaliewicz quit (Remote host closed the connection) 2014-09-28T03:05:33Z bcoburn quit (Remote host closed the connection) 2014-09-28T03:10:31Z Vivitron joined #lisp 2014-09-28T03:13:05Z Skrylar joined #lisp 2014-09-28T03:13:55Z DrCode quit (Remote host closed the connection) 2014-09-28T03:14:43Z przerull joined #lisp 2014-09-28T03:15:24Z DrCode joined #lisp 2014-09-28T03:18:03Z buzzy quit (Quit: brb) 2014-09-28T03:21:41Z zeebrah joined #lisp 2014-09-28T03:22:03Z drmeister_ quit (Remote host closed the connection) 2014-09-28T03:22:09Z MutSbeta joined #lisp 2014-09-28T03:22:54Z hiyosi joined #lisp 2014-09-28T03:25:58Z phao quit (Quit: Leaving) 2014-09-28T03:27:52Z drmeiste_ joined #lisp 2014-09-28T03:32:33Z atgreen joined #lisp 2014-09-28T03:34:16Z CrazyEddy quit (Ping timeout: 260 seconds) 2014-09-28T03:41:51Z bcoburn joined #lisp 2014-09-28T03:43:47Z mutley89 joined #lisp 2014-09-28T03:46:18Z MrWoohoo joined #lisp 2014-09-28T03:46:53Z zRecursive: (primep 19) = T, but (loop for p :from 6 below 1000 :while (primep p) :collect p) => NIL ? 2014-09-28T03:47:25Z Bike: finally return p 2014-09-28T03:48:08Z zRecursive: but (loop for i from 1 to 10 collect i) = > (1 2 3 4 5 6 7 8 9 10) 2014-09-28T03:48:25Z CrazyEddy joined #lisp 2014-09-28T03:48:45Z Bike: oh, i misread, sorry 2014-09-28T03:49:38Z zRecursive: odd 2014-09-28T03:49:39Z |3b|: zRecursive: s/while/when/ 2014-09-28T03:50:03Z meiji11 joined #lisp 2014-09-28T03:50:06Z zRecursive: wow, yeah 2014-09-28T03:50:09Z nyef: Yeah, my first thought is "6 is not prime, loop exit." 2014-09-28T03:52:06Z zRecursive is now known as zRecursive{away} 2014-09-28T03:54:26Z zRecursive{away} quit (Remote host closed the connection) 2014-09-28T04:03:08Z jleija joined #lisp 2014-09-28T04:04:13Z mutley89 quit (Ping timeout: 260 seconds) 2014-09-28T04:05:35Z nyef quit (Quit: G'night all) 2014-09-28T04:08:06Z beach joined #lisp 2014-09-28T04:09:02Z beach: Good morning everyone! 2014-09-28T04:18:40Z LiamH quit (Quit: Leaving.) 2014-09-28T04:20:50Z DTSCode: good morning 2014-09-28T04:25:31Z TDog joined #lisp 2014-09-28T04:26:56Z zophy quit (Ping timeout: 258 seconds) 2014-09-28T04:26:58Z jeremyheiler quit (Quit: Computer has gone to sleep.) 2014-09-28T04:33:16Z Skrylar: good morning beach 2014-09-28T04:34:34Z cheryllium quit (Remote host closed the connection) 2014-09-28T04:41:06Z oudeis quit (Quit: This computer has gone to sleep) 2014-09-28T04:48:18Z grungier quit (Remote host closed the connection) 2014-09-28T04:50:56Z davazp quit (Read error: Connection reset by peer) 2014-09-28T04:52:54Z Skrylar: So I spent today trying to figure out why a UFFI call was causing segfaults and floating point errors. Turns out for some reason the lisp I was using was corrupting floats through FFI and needs special massaging to stop doing that. :| 2014-09-28T04:53:04Z chitofan joined #lisp 2014-09-28T04:53:15Z grungier joined #lisp 2014-09-28T04:54:06Z beach: What implementation is that? 2014-09-28T04:54:26Z Skrylar: ECL 2014-09-28T04:54:58Z beach: That information might interest drmeister. 2014-09-28T04:55:42Z Skrylar: I'm really only using ECL because its easier to make distributables of; SBCL is great, 80mb runtime less great. lol 2014-09-28T04:56:15Z Skrylar: (yeah i know, treeshaking and whatnot; avoiding doing compiler work like that until I'm better versed in common lisp) 2014-09-28T04:57:46Z jleija quit (Quit: leaving) 2014-09-28T04:57:47Z tadni joined #lisp 2014-09-28T04:58:17Z tadni: Is there a confirmed working hardware, that will run movtiz? 2014-09-28T04:58:31Z tadni: movitz* 2014-09-28T04:58:44Z beach: tadni: Do you have problems with it? I thought it worked on any PC. 2014-09-28T04:58:57Z tadni: beach: I haven't tried it yet. 2014-09-28T04:59:07Z tadni: I'd assume it should work. 2014-09-28T04:59:18Z tadni: I mean, it's not really an os, just runs on x86. 2014-09-28T04:59:40Z beach: Yeah, and as I recall there are no complicated drivers in it. 2014-09-28T04:59:49Z beach: Try it on qemu or something like that. 2014-09-28T05:00:08Z tadni: beach: Like kvm? 2014-09-28T05:00:19Z tadni has a dedicated box he could use, eventually. 2014-09-28T05:00:49Z thepreacher joined #lisp 2014-09-28T05:01:00Z beach: tadni: qemu can emulate the processor. 2014-09-28T05:01:15Z tadni: beach: Oh, due true. 2014-09-28T05:01:42Z tadni: That being said, how will I know if it'll be able to pick up stuff like my keyboard? 2014-09-28T05:01:44Z beach: tadni: I am using it for OS experiments. The newest version works quite well it seems. 2014-09-28T05:01:51Z tadni is absoluetly new to low level stuff. 2014-09-28T05:02:11Z beach: tadni: It "just works". I am not sure how it is done. 2014-09-28T05:02:27Z tadni: beach: "Newest" verison? 2014-09-28T05:02:31Z tadni: Like form 2007 or whatever? 2014-09-28T05:02:36Z tadni: from* 2014-09-28T05:03:08Z beach: 2.0 2014-09-28T05:04:13Z beach: I had to build it from source and I had a few minor build issues, but they were easy to correct. 2014-09-28T05:04:26Z tadni can't find a anything that explicitly says 2.0 2014-09-28T05:05:18Z beach: OK, mine is already old. 2.1.2 is out as of a few days ago. 2014-09-28T05:05:28Z tadni: beach: Link? 2014-09-28T05:05:31Z beach: http://wiki.qemu.org/Main_Page 2014-09-28T05:05:38Z tadni: OH, QEMU! 2014-09-28T05:05:40Z Moogly2012 quit (Quit: Leaving) 2014-09-28T05:05:46Z tadni: I thought you were saying Movtiz. 2014-09-28T05:05:52Z beach: Oh, sorry. No. 2014-09-28T05:06:03Z gz quit (Connection reset by peer) 2014-09-28T05:06:13Z tadni: I was going to say, development is esentially dead, right? 2014-09-28T05:06:21Z beach: Yes, I think so. 2014-09-28T05:06:34Z tadni: Which is sad. 2014-09-28T05:06:57Z beach: tadni: It is not a complicated program. It can be reproduced without much effort. 2014-09-28T05:07:13Z tadni: beach: How does it work, just write to ASM? 2014-09-28T05:07:19Z beach: ... except for the Common Lisp implementation, of course. 2014-09-28T05:08:24Z beach: I haven't studied how Movitz is built. 2014-09-28T05:08:40Z beach: I assume he didn't write the entire thing in assembler. 2014-09-28T05:08:57Z Bike: when i looked at it i think there was a lispy assembly thing going on. 2014-09-28T05:09:04Z Bike: pretty sure it targets native but that's obvious 2014-09-28T05:09:13Z tadni: beach: Dream Scheme OS, has a Scheme implememntation that writes to assembler. 2014-09-28T05:09:25Z beach: Yes, there is an x86 assembler in there. 2014-09-28T05:09:26Z tadni: I'd assume that Movtiz works similary, but no idea. 2014-09-28T05:10:04Z beach: I am pretty sure he wrote most of it in Lisp, including the compiler, and then he compiles it to assembler and then to native machine code. 2014-09-28T05:10:05Z Bike: targeting native code doesn't let you run as a freestanding OS. I mean, sbcl does too, you know? 2014-09-28T05:10:53Z tadni: Bike: I mean, can SBCL run right on the metal? 2014-09-28T05:10:53Z beach: tadni: To get the thing to boot, he would need a few dozen lines of assembler for stuff that the compiler can not generate. 2014-09-28T05:11:00Z drewc quit (Read error: Connection reset by peer) 2014-09-28T05:11:10Z Bike: tadni: no, that's what i mean, "targeting asm" isn't what you're looking for 2014-09-28T05:12:08Z tadni: Bike: Ah, okay. 2014-09-28T05:12:47Z Skrylar: i was wondering earlier why there isn't already an assembler written for clisp 2014-09-28T05:12:56Z tadni had no idea he'd fall onto this side of the fence, when he start learning Lisp seriously. I guess Emacs is a lot closer to CL, than it is to Scheme. 2014-09-28T05:13:07Z Skrylar: was just thinking about how GOAL did it with a macro, and it seems like it would make maintaining a CL compiler easier to have something like that 2014-09-28T05:13:21Z drewc joined #lisp 2014-09-28T05:13:32Z tadni: Even though scheme is doing a lot of cool stuff on the GNU Distro (guix, dmd, guile-wm, guile-emacs) I kinda don't care anymore. 2014-09-28T05:14:00Z tadni: My sites are back to the unreleastic desire for lisp directly on the metal. 2014-09-28T05:14:21Z beach: tadni: Like I said, it is not hard to do. 2014-09-28T05:14:22Z tadni: sights* 2014-09-28T05:14:22Z tadni: 2014-09-28T05:14:23Z Skrylar: I don't see why lisp couldn't run on bare metal 2014-09-28T05:14:47Z tadni: beach: Yeah, it's not hard -- but too it's not very practical. 2014-09-28T05:15:00Z Bike: Skrylar: GOAL had their own compiler. 2014-09-28T05:15:01Z tadni: Well, unless someone was to work on a proper Lisp OS again... 2014-09-28T05:15:12Z tadni: someone: Get to work! 2014-09-28T05:15:15Z Bike: which was, interestingly enough, crappy, but that's how these go 2014-09-28T05:15:38Z Skrylar: yeah but I was just thinking about the assembly part, and there are things like dynasm for luajit in the C world 2014-09-28T05:15:38Z beach: tadni: http://metamodular.com/lispos.pdf 2014-09-28T05:15:51Z Skrylar: Bike: it doesn't seem inhumanly impossible to do something similar 2014-09-28T05:15:52Z tadni: I wonder how hard it'd be to set up a colemak keyboard in movtiz. 2014-09-28T05:16:46Z tadni: beach: Very cool, I'll give it a read! 2014-09-28T05:16:47Z tadni: Ty., 2014-09-28T05:17:11Z madrik joined #lisp 2014-09-28T05:17:26Z beach: M-x define-mode-abbrevtythank you 2014-09-28T05:17:36Z zRecursive joined #lisp 2014-09-28T05:18:33Z Skrylar: I still haven't gotten to that chapter of emacs .-. 2014-09-28T05:18:53Z tadni: beach: Then I'd have to enable abbrev-mode! 2014-09-28T05:18:54Z beach is always surprised that he seems to be one of the few people using abbrevs. 2014-09-28T05:19:09Z beach: tadni: M-x abbrev-mode 2014-09-28T05:19:16Z tadni: beach: Well-yeah. 2014-09-28T05:19:23Z thepreacher quit (Quit: Leaving) 2014-09-28T05:19:30Z Skrylar: beach: because that manual is giant and takes a long time to digest lol 2014-09-28T05:20:47Z KCL_ joined #lisp 2014-09-28T05:20:56Z beach: Skrylar: http://metamodular.com/Psychology/miscalculation.html 2014-09-28T05:21:13Z Skrylar: i always forget to use abbreviations and snippets stupidly enough. Used textmate, sublime and ya/snippet, always forget to actually USE a snippet until I've already typed half of it in 2014-09-28T05:21:44Z tadni: Is CLIM still used at all, besides maybe Climacs? And is Climacs usable right now? 2014-09-28T05:22:12Z Skrylar: beach: to be fair i do read the manual at least once a week, its still a massive monster to trawl through 2014-09-28T05:22:21Z beach: tadni: I use McCLIM. Climacs probably isn't that great, but it should still work. 2014-09-28T05:22:45Z beach: Skrylar: The good news is that you have time to do it. It's an investment that pays off. 2014-09-28T05:22:59Z Skrylar: beach: also the "slow method" has some things going for it; repitition tends to stick to people's minds, and if the straightforward way to do something is slow they will learn the slow one 2014-09-28T05:23:30Z Skrylar: i've been studying UX design for a project and quite like pie menus; a good pie menu basically *is* the fast way, but you can use it slowly until you learn it. 2014-09-28T05:23:35Z tadni is going to trudge through learning "ELisp" as more-or-less baby's first proglang, and has some projects he wants to work on in it -- but me thinks Climacs might be a fun project to go thereafter. 2014-09-28T05:23:56Z KCL quit (Ping timeout: 260 seconds) 2014-09-28T05:24:31Z beach: tadni: I am working on Second Climacs. I am also working on CLIM3 (a successor of CLIM II) and its implementation CLIMatis. 2014-09-28T05:24:48Z tadni: beach: Very neat! Links? 2014-09-28T05:25:03Z zRecursive: Any problem in (defun gdbh (N) (loop :for p1 :from 6 :below N :for p2 :from 6 :below N :when (and (primep p1) (primep p2) (= (+ p1 p2) N)) :collect p1)) ? 2014-09-28T05:25:13Z beach: tadni: All is here: https://github.com/robert-strandh 2014-09-28T05:25:50Z tadni: beach: VERY COOL. Adding to watch list. :^) 2014-09-28T05:26:03Z beach: tadni: Great! 2014-09-28T05:26:13Z H4ns: zRecursive: p1 and p2 are stepped in each iteration 2014-09-28T05:26:21Z H4ns: zRecursive: probably not what you intended 2014-09-28T05:26:42Z beach: zRecursive: What H4ns said. You probably need nested loops. 2014-09-28T05:26:47Z zRecursive: yeah 2014-09-28T05:26:53Z innertracks quit (Ping timeout: 272 seconds) 2014-09-28T05:27:06Z tadni: Man, both CL and Scheme communtiy members are doing some very great things. 2014-09-28T05:28:17Z DTSCode is now known as | 2014-09-28T05:28:25Z beach: tadni: I don't know about Scheme, but the Common Lisp community is chronically understaffed. If you want to help out, that would be great. 2014-09-28T05:28:47Z | is now known as Guest91390 2014-09-28T05:28:53Z Guest91390 is now known as DTSCode 2014-09-28T05:29:10Z zRecursive: H4ns: stepped as (p1 6 (p2 6 7 ...)) (p1 7 (p2 6 7 ...)) ... ? 2014-09-28T05:29:22Z tadni: beach: I mean, like I said -- I'm just jumping aboard for Elisp as my "first lang" but it looks as-if I'll be leaning towards the CL side eventually. 2014-09-28T05:29:40Z Bike: zRecursive: you only need to iterate over one variable. (loop for p1 from 6 below N when (and (primep p1) (primep (- N p1)) collect p1) 2014-09-28T05:29:47Z tadni: Things like Lispkit, and Stumpwm, certianly help to convience me. 2014-09-28T05:29:49Z Bike: well, with fixed parens. 2014-09-28T05:30:05Z beach: tadni: Unless you want to write Emacs stuff, I recommend you go directly to Common Lisp. 2014-09-28T05:30:17Z tadni: Really, Emacs is the only application I use from day to day, that's not CL and it's a lot closer to CL than it is to Scheme. 2014-09-28T05:30:28Z zRecursive: Bike: great! 2014-09-28T05:30:46Z tadni: beach: I do have some projects in Emacs I want to work on, but yeah, understood. 2014-09-28T05:30:48Z innertracks joined #lisp 2014-09-28T05:31:05Z DTSCode quit (Read error: Connection reset by peer) 2014-09-28T05:31:06Z beach: tadni: Also, there is a Common Lisp compatibility library for GNU Emacs. 2014-09-28T05:31:42Z tadni: beach: Yeah, I saw -- but it's not just using CL in Emacs right? I thought it just made Emacs Lisp more similar to Cl? 2014-09-28T05:31:42Z beach: tadni: So you can pretty much pretend that you are writing Common Lisp. It does not contain all the functionality of Common Lisp, but it is improved regularly. 2014-09-28T05:32:11Z tadni still needs to look into slime ... he's used stumpwm for at least a year, without using/needing it. 2014-09-28T05:32:21Z beach: tadni: Right, it's a bunch of Emacs-Lisp functions/macros that adds Common Lisp functionality to Emacs Lisp. 2014-09-28T05:33:07Z tadni: I'm going to at least go through the Emacs Lisp Intro that ships from Emacs, and from there, I'll likely side with CL. 2014-09-28T05:34:13Z tadni: Well, unless GNU Distro is super mature, Guilemacs looks like it's going to hit main branch, guile-wm gets that graphics toolkit for emacs, etc... then maybe Guile Scheme. 2014-09-28T05:34:44Z tadni: But from what I've seen from both syntax wise, I prefer CL naturally. 2014-09-28T05:36:17Z beach: I read a recent post by Stephan Monnier. It seems that after his talk at ILC, he now prefers to move Emacs Lisp in the direction of Common Lisp. 2014-09-28T05:36:30Z tadni: Stefan? 2014-09-28T05:36:36Z innertracks quit (Quit: innertracks) 2014-09-28T05:37:23Z beach: Oh, sorry. Misspelled in the ILC proceedings. 2014-09-28T05:37:35Z Skrylar: the only thing i want for a common lisp stack is a neat way to redistribute end user files that doesn't carry around this massively huge pile of unneeded code. lol 2014-09-28T05:37:44Z tadni: beach: Yeah, he mentioned on the emacs-devel ml that he wants Emacs to slowly shift to CL rather than Scheme via Guilemacs. 2014-09-28T05:38:04Z Skrylar: not sure why scheme has so many native code compilers and lisp doesn't though; its not like its impossible to do 2014-09-28T05:38:26Z tadni: beach: Np, just wasn't sure if we were talking about the same person for a second -- I forgot his last name, knew it started with an M though. 2014-09-28T05:38:42Z tadni: Skrylar: Scheme is more fragmented. 2014-09-28T05:38:47Z beach: Skrylar: What makes you think Common Lisp does not have native-code compilers? 2014-09-28T05:38:49Z tadni: More duplicated effort. 2014-09-28T05:39:00Z DTSCode joined #lisp 2014-09-28T05:39:15Z beach: tadni: I don't know what power he has over Emacs Lisp though. 2014-09-28T05:39:51Z tadni: beach: He's active maintainer in-general, and according to him, he does a majority of the core work in the vm. 2014-09-28T05:39:56Z tadni: So, I assume a lot. 2014-09-28T05:40:21Z tadni: The pressing problem is that Emacs is a GNU project and as of recent, Guile has been pushing really hard. 2014-09-28T05:40:34Z tadni: Guix, DmD in the GNU Distro. 2014-09-28T05:40:49Z beach: tadni: Sure, yes. I think if RMS is to decide, it won't be Common Lisp. 2014-09-28T05:40:52Z tadni: It wouldn't be unreasonable that that has some influence. 2014-09-28T05:41:19Z tadni: beach: RMS already had a statement awhile back, pretty much siding in that direction. 2014-09-28T05:41:30Z tadni: But yeah, he doesn't get the vote. 2014-09-28T05:42:01Z tadni: I'm not all too concerned, Emacs Lisp ins't going away ... unless it slowly becomes CL. 2014-09-28T05:42:12Z tadni: WIth Guilemacs, it's not going away though. 2014-09-28T05:42:45Z beach: Skrylar: Did you see my question for you? 2014-09-28T05:43:38Z mrSpec joined #lisp 2014-09-28T05:44:22Z tadni: Does CL have a documentation system? I was just checking out beach's LispOS doc directory and noting all the tex 2014-09-28T05:44:43Z beach: tadni: What is a "documentation system"? 2014-09-28T05:45:23Z tadni: beach: Like Racket's Scribe, or Guile's Skribillo. A way to make programmable texts, kinda in the same vein as LaTex. 2014-09-28T05:46:25Z beach: tadni: I don't think there is such a system written in Common Lisp if that is what you are asking. 2014-09-28T05:46:52Z tadni: That'd probably be a relatively fun progect to work on. 2014-09-28T05:47:07Z beach: tadni: Yes, I have been thinking about such a thing. 2014-09-28T05:47:15Z Bike: http://www.cliki.net/documentation%20tool for ref 2014-09-28T05:47:39Z tadni: Bike: Okay, I was going to say. 2014-09-28T05:47:50Z beach: I am convinced that it is the wrong thing to do to start by defining a source syntax for it. I would be inclined to define the document as a graph of CLOS class instance. 2014-09-28T05:48:12Z tadni: Is OO used a lot in CL? 2014-09-28T05:48:17Z beach: yes. 2014-09-28T05:48:38Z beach: Bike: Aren't those tools for extracting docstrings from Common Lisp source code? 2014-09-28T05:48:55Z Bike: probably, but they're related enough i thought i'd mention it 2014-09-28T05:48:56Z tadni: Is it actually viewed as better, than say FP, by the community (for the most part). 2014-09-28T05:49:08Z Bike: some of them do have source tools and shit 2014-09-28T05:49:20Z beach: tadni: Most significant modern Common Lisp programs use CLOS. 2014-09-28T05:49:56Z tadni: Odd, I wonder why this doesn't seem to be the case in most Schemes? 2014-09-28T05:50:11Z beach: tadni: Because Scheme doesn't have an object system. 2014-09-28T05:50:28Z tadni: beach: Guile does, but no-one seems to use it. 2014-09-28T05:50:30Z tadni: Goops. 2014-09-28T05:50:45Z beach: tadni: Guile does not have an international standard. 2014-09-28T05:50:48Z Bike: clos is more involved. probably more involved than almost any OO system, really. cept maybe smalltalk 2014-09-28T05:52:03Z beach: tadni: CLOS is standardized. All Common Lisp implementations have it. Most implementations are very fast. And as Bike says, it is very sophisticated. 2014-09-28T05:53:03Z tadni: Would CL be good, just to learn OO? 2014-09-28T05:53:08Z Bike: nah. 2014-09-28T05:53:12Z beach: Yes! :) 2014-09-28T05:53:31Z Bike: it's not like C++ or Java or bla bla stereotype in any major way. 2014-09-28T05:53:36Z beach: tadni: CLOS is very different from other object-oriented languages. 2014-09-28T05:53:52Z Bike: i wouldn't worry too much about learning things, anyway. programming's pretty easy overall. go w/ the flow. 2014-09-28T05:53:59Z beach: tadni: So you can't use your knowledge of CLOS to improve your object-oriented programming in other languages. 2014-09-28T05:54:07Z tadni has just trivially played with C++, so he doesn't really no anything about OO. 2014-09-28T05:54:36Z beach: tadni: You will be surprised how simple CLOS is compared to the OO style of other languages. 2014-09-28T05:55:18Z beach: tadni: Like Bike says, quit worrying. Just start programming in Common Lisp. 2014-09-28T05:55:44Z tadni: beach: Well, the Uni I'm going to go to ... is really going to force C++ and OO on me it looks like, so I suppose if I go learn CL, then I'lll have a frame of reference to compare. 2014-09-28T05:56:10Z beach: That should be, er, amusing. 2014-09-28T05:56:32Z zRecursive i donot understand why people still talk Scheme. It is VERY hard for you to build a system which can run all Scheme impls. In CL, it is normal for a system(i.e. maxima, stumpwm) runs on CCL,SBCL even CLISP. 2014-09-28T05:56:57Z beach vanishes for a while, and leaves tadni in the capable hands of other #lisp participants. 2014-09-28T05:57:02Z tadni: beach: Well, like I said, I'm probably going to do ELisp first, just for the fact I have 10 or-so projects I want to do. Nothing that I could want to do that is CL based, is easy enough that it is approachable for a complete begineer. 2014-09-28T05:57:08Z tadni: beach: o/ 2014-09-28T05:57:12Z tadni: Thanks for the help/info. 2014-09-28T05:57:25Z Bike: your uni's going to take a semester to teach you basic C++. if you get a few weeks of practice programming in whatever, even on your own time, that's going to help more than a passive educational experience (not that you're necessarily going to have one at uni) 2014-09-28T05:57:40Z chitofan: http://paste.lisp.org/display/143876 2014-09-28T05:57:59Z tadni: Bike: Yeah, I plan on getting a solid headstart from before uni. 2014-09-28T05:58:02Z chitofan: how does nconc alter the exclaim function? 2014-09-28T05:58:12Z Bike: chitofan: it alters the quoted data in it. 2014-09-28T05:58:19Z Bike: chitofan: you are not allowed to mutate quoted data like that. 2014-09-28T05:58:38Z chitofan: is there something about the operator * 2014-09-28T05:58:44Z Bike: nope, it's t he quote. 2014-09-28T05:58:50Z tadni: zRecursive: Too be fair, the GNU distro is slowly working in the direction of having a completish Scheme system. Guix (package manager), Dmd (initd), Guile-wm, maybe Guilemacs. 2014-09-28T05:58:55Z Bike: Try (append expression (list 'oh 'my)) instead. 2014-09-28T05:59:00Z jusss joined #lisp 2014-09-28T05:59:06Z Bike: Then it'll make a new list every time instead of just storing it in constant memory. 2014-09-28T05:59:12Z tadni: That being said, right now, I can have a much more complete experience in CL. 2014-09-28T05:59:26Z tadni: Stumpwm and Lispkit are two major components. 2014-09-28T05:59:36Z tadni: And Emacs is sorta kinda CLish. 2014-09-28T05:59:37Z chitofan: why does it work that way? is there a name for this kind of thing so i can read up on it 2014-09-28T05:59:37Z Bike: there's a #stumpwm, jsyk 2014-09-28T05:59:47Z tadni: Bike: What, me? 2014-09-28T05:59:51Z Bike: yeah 2014-09-28T06:00:00Z Bike: if you start using it you might wanna hang out there too 2014-09-28T06:00:13Z tadni: Bike: I've actually used it for at least a year. 2014-09-28T06:00:27Z tadni: Got a pretty workable config, for not knowing how to program. 2014-09-28T06:00:31Z tadni: Same goes for Emacs. 2014-09-28T06:00:37Z Bike: oh, heh. well, you know, just sayin there's a userbase if you want it. 2014-09-28T06:00:46Z zRecursive: tadni: Guile is good. But people will lose freedom to choose impl 2014-09-28T06:01:08Z tadni: Bike: Yeah, I've hung out there a few times -- pretty quiet for the most part though. 2014-09-28T06:01:10Z tadni: :^P 2014-09-28T06:01:22Z tadni: zRecursive: To choose what? 2014-09-28T06:01:41Z zRecursive: scheme implementation 2014-09-28T06:02:00Z tadni: zRecursive: Freedom in what sense? Flexibility? 2014-09-28T06:02:06Z Bike: chitofan: it works like that because you're telling the compiler that the data is constant, and it optimizes accordingly. the undefined consequences are mentioned in clhs quote, and somewhat gone over in the compilation semantics (3.2 or so) 2014-09-28T06:03:17Z zRecursive: tadni: In CL, Maxima can be built using CCL, SBCL and others 2014-09-28T06:03:31Z zRecursive: just an example 2014-09-28T06:03:43Z tadni: zRecursive: Well yeah, that's because there's a strong standard/ 2014-09-28T06:03:55Z tadni: Scheme is slooooooowly working towads that direction. 2014-09-28T06:04:24Z zRecursive: so CL now :) 2014-09-28T06:04:28Z Grue`: damn, i wouldn't have noticed the bug in that exclaim function tbh 2014-09-28T06:04:53Z chitofan: bike: is there a place i can read up about it.. i stilldon't really understand 2014-09-28T06:05:15Z Bike: chitofan: If you have quoted data - 'something - you are not allowed to modify it. That's pretty much all there is to it. 2014-09-28T06:05:29Z tadni: I was wondering about this in Emacs Lisp and it seems to be the same in CL. Are there circumstances where one would use set over setq? 2014-09-28T06:05:53Z Bike: No. (setf symbol-value) is what you'd do now, but it's kind of a rare operation anyway. 2014-09-28T06:06:17Z tadni: What's that f stand for? 2014-09-28T06:06:29Z Bike: Field? Something like that. 2014-09-28T06:06:30Z Grue`: form? 2014-09-28T06:06:31Z Bike: clhs setf 2014-09-28T06:06:31Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_setf_.htm 2014-09-28T06:07:05Z Bike: setf does generalized access. very vaguely like =-overloading in C++. 2014-09-28T06:07:25Z Skrylar: beach: its not just a matter of native compilation, its also a matter of distro 2014-09-28T06:07:38Z Bike: so you do like (setf (aref foo bar) baz) instead of (set-array-ref foo bar baz). 2014-09-28T06:08:19Z tadni: Oh, neat. 2014-09-28T06:08:19Z Bike: anyway CL uses dynamic scope a lot less than emacs has, so it doesn't come up anyway. 2014-09-28T06:08:38Z Grue`: chitofan: http://www.lispworks.com/documentation/HyperSpec/Body/03_ga.htm 2014-09-28T06:08:54Z Grue`: you can read here about what will cause weird things to happen 2014-09-28T06:09:03Z Skrylar: beach: i know that sbcl makes machine code which is comparable to optimized C++, its just not as mature at making distributables as i would like. last time i used it, 80mb overhead or so on windows, admittedly because it had every possible IDE tool active. My points not that its impossible, only that scheme has those and clisps don't 2014-09-28T06:09:25Z Skrylar: (i actually did poke the sbcl guys about helping fix that, when i have a better idea of how clisp works) 2014-09-28T06:09:25Z Grue`: chitofan: see also definition of literal object 2014-09-28T06:09:33Z Bike: "clisp" usually refers to the implementation called "clisp", Skrylar, just so you know 2014-09-28T06:09:38Z Skrylar: meh. 2014-09-28T06:09:53Z Skrylar: i had to start saying it because this one guy i knew elsewhere decided "do it in lisp" meant "scheme" 2014-09-28T06:10:08Z Grue`: you can say CL 2014-09-28T06:10:10Z Bike: "CL" or something then 2014-09-28T06:10:14Z Skrylar: yeah 2014-09-28T06:10:17Z tadni: Yeah, that is a confusing thing. I wish EL was common for Emacs Lisp though. 2014-09-28T06:10:36Z Skrylar: elisp is 2014-09-28T06:10:37Z tadni: So at least you could do EL, CL; Because Elisp and Clisp doesn't work. 2014-09-28T06:10:52Z Skrylar: howso? i've seen emacs lisp referenced as elisp before 2014-09-28T06:11:13Z chitofan: thanks grue` :) 2014-09-28T06:11:21Z tadni: Skrylar: I'm saying, since Clisp is an implementation not the lang/standard. 2014-09-28T06:11:28Z Skrylar: tadni: ok 2014-09-28T06:11:40Z tadni: Elisp is fine and understood, Clisp is meant to mean the GNU Implemntation. 2014-09-28T06:11:45Z Shinmera joined #lisp 2014-09-28T06:11:51Z Skrylar: i still have to prod through the hyperspec and see how to map my non-lisp knowledge over 2014-09-28T06:12:16Z tadni has only been up for 7 hours, but is ready to sleep. 2014-09-28T06:12:25Z Skrylar injects coffee in to tadni 2014-09-28T06:12:38Z tadni: Skrylar: Nah, it's 1am here. 2014-09-28T06:12:58Z tadni: I was up 45 hours the day/night before, and slept like 12. 2014-09-28T06:14:23Z tadni: Welp, thanks for all the information and advice everyone. I guess I'm going to grab some food try to go to sleep, or something. o/ 2014-09-28T06:14:27Z tadni is AFK. 2014-09-28T06:14:45Z aftershave joined #lisp 2014-09-28T06:21:17Z bgs100 quit (Quit: bgs100) 2014-09-28T06:27:12Z fortitude quit (Ping timeout: 246 seconds) 2014-09-28T06:28:14Z baotiao quit (Quit: baotiao) 2014-09-28T06:28:34Z baotiao joined #lisp 2014-09-28T06:29:59Z beach: Skrylar: If you mean "creates an executable file" then don't say "generates native code" because the two concepts are orthogonal. 2014-09-28T06:30:41Z tadni is back, decided not to go out. 2014-09-28T06:32:08Z Skrylar: beach: i'm an ex-C derp, bear with me a little 2014-09-28T06:32:08Z Skrylar: lol 2014-09-28T06:32:25Z normanrichards quit (Read error: Connection reset by peer) 2014-09-28T06:32:40Z beach: Skrylar: I am not criticizing you. Just teaching. Learn and improve! 2014-09-28T06:33:43Z tadni: Skrylar: Is your name a portmanteau of Skrillex and Syklar...? 2014-09-28T06:33:47Z tadni: Just noticed that. 2014-09-28T06:38:17Z zRecursive quit (Remote host closed the connection) 2014-09-28T06:40:42Z tadni: Hrm, Slime doesn't find a lisp on my system. 2014-09-28T06:40:52Z tadni: I have both Clisp and SBCL installed. 2014-09-28T06:41:08Z zeitue quit (Ping timeout: 250 seconds) 2014-09-28T06:41:38Z Bike: did you configure slime? 2014-09-28T06:43:13Z Grue`: (setq inferior-lisp-program "sbcl") 2014-09-28T06:44:20Z tadni: Ah. I'm used to playing with geiser, which just scans for supported implemetnations. Sorry and thanks. 2014-09-28T06:44:40Z beach: tadni: I recommend you install SLIME using Quicklisp. Then you get instructions for what to put in your startup file. 2014-09-28T06:48:25Z tadni: Hrm, it's crashing in quicklisp. 2014-09-28T06:48:34Z tadni: Says "slime" isn't found. 2014-09-28T06:49:22Z tadni: ... I installed swank, and I think it grabed slime as a depend? 2014-09-28T06:50:15Z beach: tadni: I am not the right person to debug such problems. Normally, you don't install swank separately; Quicklisp does it for you. 2014-09-28T06:51:41Z tadni: beach: Just (ql:quickload "slime")? 2014-09-28T06:51:54Z Shinmera: quicklisp-slime-helper 2014-09-28T06:51:54Z beach: I think it's slime-helper or something like that. 2014-09-28T06:52:04Z tadni: That's a bit odd. 2014-09-28T06:52:12Z beach: A bit, yes. 2014-09-28T06:52:15Z Skrylar: tadni: no, its something i typed in at random years ago that turns out to be danish for scholar with an extra R stuffed in by pure chance 2014-09-28T06:52:28Z gingerale joined #lisp 2014-09-28T06:52:45Z tadni: Shinmera: Yeah, thanks. 2014-09-28T06:52:58Z baotiao quit (Quit: baotiao) 2014-09-28T06:55:03Z tadni: It says "Polling "/tmp/slime.7124".. (Abort with `M-x slime-abort-connection'.) [132 times]" in messages and counting... does that mean the connection is active? 2014-09-28T06:55:34Z Grue`: no, it can't connect 2014-09-28T06:55:36Z Grue`: firewall maybe? 2014-09-28T06:56:03Z Grue`: check *inferior-lisp* buffer 2014-09-28T06:56:06Z tadni: Grue`: I don't think so. I'm on a pretty bare bone's Fedora install. 2014-09-28T06:57:59Z tadni is going to restart emacs. Sec. 2014-09-28T06:58:05Z tadni quit (Remote host closed the connection) 2014-09-28T06:58:08Z zeitue joined #lisp 2014-09-28T06:58:25Z innertracks joined #lisp 2014-09-28T06:58:35Z innertracks quit (Client Quit) 2014-09-28T06:59:21Z tadni joined #lisp 2014-09-28T07:00:21Z tadni: Not sure what changed, but it opened a slime-repl ... so I assume it worked. 2014-09-28T07:01:03Z beach: Congratulations! 2014-09-28T07:01:31Z meiji11 quit (Remote host closed the connection) 2014-09-28T07:03:37Z tadni: For some reason, Emacs also reset my font faces -- so they were HUGE. 2014-09-28T07:04:34Z tadni is going to try Lispkit now. 2014-09-28T07:05:42Z tadni: Could CLIM import a web instance like Webkit? This uses GTK. 2014-09-28T07:06:36Z beach: McCLIM? I doubt it. I don't think we ever connected to native toolkits. 2014-09-28T07:07:11Z tadni: I guess it's probably not worth the effort, unless one wanted to make a formal Lisp De. :^P 2014-09-28T07:07:38Z tadni: At that point too, it might be worth writing a webengine in Lisp. 2014-09-28T07:08:06Z beach: "webengine"? Something like Hunchentoot? 2014-09-28T07:09:00Z tadni: beach: Nah, that's a web server? 2014-09-28T07:09:15Z beach: So what is a "webengine"? 2014-09-28T07:09:25Z |3b| guesses something like closure 2014-09-28T07:09:37Z beach: Oh, a client? 2014-09-28T07:09:38Z tadni: I mean, an something like webkit, or whatever firefox uses. 2014-09-28T07:12:24Z tadni: Following the lispkit instructions... "[package cl-webkit2] debugger invoked on a LOAD-FOREGIN-LIBRARY-ERROR in thread #: Unable to load any of the alternatives: ("libwebkit2gtk-3.0.so")" 2014-09-28T07:14:52Z Bike: well, do you have libwebkit2gtk? 2014-09-28T07:15:11Z tadni: Bike: On my local system? 2014-09-28T07:15:25Z Bike: well, yeah, that's where it's looking. 2014-09-28T07:15:48Z tadni: Woops, nope. 2014-09-28T07:17:06Z tadni: Still nothing/ 2014-09-28T07:17:30Z tadni: Do I need to restart the install somehow? 2014-09-28T07:17:52Z pecg quit (Quit: WeeChat 1.0) 2014-09-28T07:20:15Z pjb: - 2014-09-28T07:22:18Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2014-09-28T07:22:26Z oudeis joined #lisp 2014-09-28T07:25:53Z tadni: Meh, I'll bugger with it some other time -- when I'm more awake. 2014-09-28T07:30:21Z malbertife joined #lisp 2014-09-28T07:36:10Z JuanDaugherty joined #lisp 2014-09-28T07:37:56Z arenz joined #lisp 2014-09-28T07:38:36Z DTSCode quit (Ping timeout: 246 seconds) 2014-09-28T07:43:33Z ehu joined #lisp 2014-09-28T07:45:21Z arenz quit (Ping timeout: 272 seconds) 2014-09-28T07:49:27Z Jesin quit (Ping timeout: 246 seconds) 2014-09-28T07:49:59Z beach: What would be a good control structure for an AST interpreter? Recursive? Iterative? CPS? It should handle non-local control transfer. 2014-09-28T07:50:14Z Jesin joined #lisp 2014-09-28T07:50:57Z attila_lendvai joined #lisp 2014-09-28T07:53:25Z mishoo joined #lisp 2014-09-28T07:58:30Z buzzy joined #lisp 2014-09-28T07:58:53Z malbertife_ joined #lisp 2014-09-28T08:01:09Z beach: I am thinking the static runtime environment should be a list of hash tables. A new hash table is consed onto the enclosed environment of a function when that function is invoked. 2014-09-28T08:01:34Z beach: That way, I don't have to worry about variable capture and such. 2014-09-28T08:01:46Z freaksken joined #lisp 2014-09-28T08:01:59Z malbertife quit (Ping timeout: 258 seconds) 2014-09-28T08:02:56Z beach: If a simple recursive structure works, that might be the simplest. Non-local control can be handled using CATCH/THROW, I think. 2014-09-28T08:03:05Z attila_lendvai quit (Quit: Leaving.) 2014-09-28T08:08:48Z sdemarre joined #lisp 2014-09-28T08:17:24Z Kenjin joined #lisp 2014-09-28T08:18:36Z resttime_ quit (Quit: resttime_) 2014-09-28T08:24:18Z Kenjin quit (Remote host closed the connection) 2014-09-28T08:24:34Z chitofan: can anyone make sense of this? 2014-09-28T08:24:35Z chitofan: http://paste.lisp.org/display/143876#1 2014-09-28T08:24:58Z chitofan: makesme think of a tree 2014-09-28T08:25:01Z chitofan: but i cant visualize it 2014-09-28T08:29:04Z baotiao joined #lisp 2014-09-28T08:41:38Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-09-28T08:45:00Z beach: chitofan: As I have already said, when you submit code for someone else to read, you must respect some simple typographical conventions. In particular, the indentation must be correct. 2014-09-28T08:45:26Z beach: chitofan: Otherwise, you impose on that someone to count parentheses, something a programmer of Common Lisp never does. 2014-09-28T08:46:42Z Ven joined #lisp 2014-09-28T08:48:21Z Kenjin joined #lisp 2014-09-28T08:49:19Z chitofan: beach:oh sorry, copied it right out of a book, forgot to edit 2014-09-28T08:49:30Z wasamasa: beach: unless he's writing something on a whiteboard :P 2014-09-28T08:50:04Z beach: wasamasa: Whiteboard? That sounds like 20th century technology. 2014-09-28T08:50:05Z wasamasa: beach: it's fun to see people jump back to the opening paren for every closing one they write, similiar to show-paren-mode in emacs 2014-09-28T08:50:39Z beach: wasamasa: Yes, I occasionally do that myself actually, when I don't have a computer handy. 2014-09-28T08:50:55Z chitofan: http://paste.lisp.org/display/143876#3 2014-09-28T08:50:57Z chitofan: here we go 2014-09-28T08:51:19Z chitofan: but actually, i'm already working it out on paper one step by one step 2014-09-28T08:51:31Z beach: chitofan: It "flattens" a list structure, i.e., it produces a single list with all the atoms of the original structure in it. 2014-09-28T08:51:42Z beach: chitofan: But you shouldn't program that way. 2014-09-28T08:52:32Z beach: chitofan: That version of flatten uses an accumulator which is a standard trick for turning some recursion into tail recursion. It makes the program harder to understand. 2014-09-28T08:53:06Z beach: chitofan: In the beginning, you should use the same structure that we discussed for REMOVE5. 2014-09-28T08:56:56Z defaultxr quit (Quit: gnight) 2014-09-28T08:57:36Z beach: chitofan: Let me modify the description of what FLATTEN does a bit: it produces a single list with all the NON-NIL atoms of the original structure in it. 2014-09-28T08:58:33Z mhneifer joined #lisp 2014-09-28T08:58:47Z chitofan: ok, but i find a little hard to visualize how it works 2014-09-28T08:59:06Z beach: That's because it uses the accumulator trick which makes the code harder to understand. 2014-09-28T08:59:08Z Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-09-28T08:59:25Z pjb: chitofan: you can ask lisp to tell you how it works. 2014-09-28T08:59:33Z chitofan: and so it's not a good diea to learn it now 2014-09-28T08:59:35Z chitofan: ? 2014-09-28T09:00:21Z beach: chitofan: Right. Try this one instead: (defun flatten (structure) (cond ((null structure) '()) ((atom structure) (list structure)) (t (append (flatten (car structure) (cdr structure)))))) 2014-09-28T09:00:48Z beach: chitofan: I'll let you format it, enter it, trace it, and then run it on some arbitrary nested list structure. 2014-09-28T09:01:22Z beach: OOPS 2014-09-28T09:01:28Z ndrei joined #lisp 2014-09-28T09:01:42Z beach: (defun flatten (structure) 2014-09-28T09:01:42Z beach: (cond ((null structure) '()) ((atom structure) (list structure)) (t 2014-09-28T09:01:42Z beach: (append (flatten (car structure)) (flatten (cdr structure)))))) 2014-09-28T09:01:43Z pjb: chitofan: http://paste.lisp.org/+330K/4 2014-09-28T09:02:06Z tadni wishes CLOS was named Oops. 2014-09-28T09:02:19Z beach: Sorry for the code here. 2014-09-28T09:02:32Z stepnem joined #lisp 2014-09-28T09:02:45Z tadni: Is McClim fun to play with? 2014-09-28T09:02:59Z beach: tadni: I definitely think it is. Others may disagree. 2014-09-28T09:03:01Z pjb: tadni: fun enough. 2014-09-28T09:03:30Z tadni: Has anyone tried doing a drawing application in it? 2014-09-28T09:03:47Z beach: tadni: There is a drawing demo in the distribution. 2014-09-28T09:04:08Z tadni: /me wonders if mcclim is on ql. 2014-09-28T09:04:08Z tadni: 2014-09-28T09:04:16Z beach: It is. 2014-09-28T09:04:22Z tadni: Test? 2014-09-28T09:04:27Z PuercoPop: tadni: yeah ahefner 2014-09-28T09:04:35Z tadni: Did you get the ql comment/question? 2014-09-28T09:04:47Z wasamasa: beach: I've seen the cl-reference project on your github account 2014-09-28T09:04:55Z wasamasa: beach: what sources are you using for it? 2014-09-28T09:04:59Z PuercoPop: https://github.com/ahefner/McPixel 2014-09-28T09:05:39Z beach: wasamasa: Sources? My brain? 2014-09-28T09:06:02Z wasamasa: beach: are you just pouring what you know about CL into it or using other sources as guideline? 2014-09-28T09:06:15Z beach: tadni: I think the drawing demo is in Examples/clim-fig.lisp. 2014-09-28T09:06:40Z tadni: Aw, McClims Common-lisp.net site doesn't load screenshots. 2014-09-28T09:06:44Z beach: wasamasa: When in doubt, I consult the Common Lisp HyperSpec. But I make sure I don't use the same wording, because of problems with copyright. 2014-09-28T09:07:05Z beach: tadni: Oh, too bad. :( 2014-09-28T09:07:39Z tadni: Man, CL has soooo many more projects I'm interested in. 2014-09-28T09:08:15Z beach: tadni: There are some screenshots of Gsharp here http://common-lisp.net/project/gsharp/ 2014-09-28T09:08:20Z beach: tadni: Gsharp uses McCLIM. 2014-09-28T09:08:25Z Shinmera: Bleh, talk of drawing applications made me remember that I should get back to Parasol's restructuring... 2014-09-28T09:08:37Z tadni: Which shocks me, because I'm a HUGE GNU fanboy, so I assumed I would automatically default to Guile. 2014-09-28T09:08:49Z Shinmera feels an itch 2014-09-28T09:09:04Z tadni: beach: Ty. 2014-09-28T09:09:14Z chitofan: is there a command to find a chatlog of the channel? 2014-09-28T09:09:17Z nug700_ quit (Quit: bye) 2014-09-28T09:09:33Z beach: tadni: M-x define-mode-abbrevtythank you. 2014-09-28T09:09:41Z wasamasa: chitofan: Shinmera hosts logs 2014-09-28T09:09:42Z Shinmera: chitofan: http://log.irc.tymoon.eu/freenode/lisp 2014-09-28T09:09:50Z tadni: beach: Ah! I know, I know. 2014-09-28T09:10:05Z tadni: That's only for this session though, right? 2014-09-28T09:10:28Z wasamasa: no 2014-09-28T09:10:53Z chitofan: thanks! 2014-09-28T09:11:09Z beach: tadni: No, Emacs uses a file to save abbrevs. 2014-09-28T09:11:27Z Colleen___ is now known as Colleen 2014-09-28T09:11:47Z tadni: Ah, I already set it -- but I didn't set emacs to set abbrev-mode for each erc buffer. 2014-09-28T09:11:53Z tadni: Forgot how to do that magic. 2014-09-28T09:12:37Z beach: tadni: Check out add-hook. 2014-09-28T09:13:22Z tadni: beach: That was easy enough, thank you. 2014-09-28T09:13:33Z beach: Anytime. 2014-09-28T09:13:57Z tadni calls beach at 3am for annoying questions. 2014-09-28T09:15:39Z tadni: How should I load clim-fig.lisp? I tried just running "sbcl --load clim-fig.lisp" on it. 2014-09-28T09:15:46Z ggole joined #lisp 2014-09-28T09:16:12Z beach: tadni: That one is going to take a few minutes for me to answer because I don't remember by heart. Hold on... 2014-09-28T09:16:12Z beach: 2014-09-28T09:16:35Z madrik quit (Quit: away) 2014-09-28T09:17:13Z tadni: It says "The name """CLIM-DEMO" does not designate any package.""" 2014-09-28T09:17:28Z beach: tadni: Please wait a minute... 2014-09-28T09:17:48Z tadni: beach: Yeah, no problem -- just wanted to give info I thought might be useful. 2014-09-28T09:18:39Z beach: tadni: (require :mcclim) (require :clim-demo) (clim-demo::clim-fig) 2014-09-28T09:18:42Z theos quit (Disconnected by services) 2014-09-28T09:19:08Z theos joined #lisp 2014-09-28T09:19:12Z beach: Sorry, 2014-09-28T09:19:22Z beach: (require :mcclim) (require :clim-examples) (clim-demo::clim-fig) 2014-09-28T09:19:37Z beach: tadni: ^ 2014-09-28T09:21:06Z beach: Hmm, that's quite a nice demo, actually. 2014-09-28T09:21:34Z beach: tadni: The slider is for line thickness. 2014-09-28T09:21:59Z tadni: beach: Thank you! Very cool. 2014-09-28T09:21:59Z tadni: 2014-09-28T09:22:36Z beach: Only 400 lines of code. 2014-09-28T09:22:41Z robot-beethoven quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-09-28T09:22:50Z tadni: beach: Wow. 2014-09-28T09:22:57Z tadni: That's actually pretty impressive. 2014-09-28T09:23:25Z beach: It might use some functionality from other files; I haven't checked. 2014-09-28T09:23:36Z beach: But CLIM code is very compact usually. 2014-09-28T09:24:08Z vaporatorius joined #lisp 2014-09-28T09:24:36Z tadni: And this is similar to what LispMs used? 2014-09-28T09:25:34Z beach: I think so, yes. 2014-09-28T09:25:56Z MutSbeta quit (Ping timeout: 272 seconds) 2014-09-28T09:26:00Z beach: tadni: Also check out (clim-demo:demodemo) 2014-09-28T09:26:07Z stassats joined #lisp 2014-09-28T09:26:10Z beach: tadni: Not all of them work, but most do. 2014-09-28T09:26:18Z schaueho joined #lisp 2014-09-28T09:28:25Z beach: Hah! Those are nice demos. I like the method browser. 2014-09-28T09:29:42Z tadni: Man, this is really pretty cool! 2014-09-28T09:30:01Z tadni: Is this portable at all, or dependent on xorg? 2014-09-28T09:30:20Z tadni: I think LispMs used xorg, iirc? 2014-09-28T09:30:24Z mrSpec quit (Quit: mrSpec) 2014-09-28T09:30:38Z stassats: not really 2014-09-28T09:30:41Z beach: Good question. The default backend uses X11. 2014-09-28T09:30:44Z tadni: Which I found odd, if if I do recall currently. 2014-09-28T09:31:18Z beach: tadni: I don't know whether any other McCLIM backend works, other than the PostScript backend. 2014-09-28T09:34:39Z H4ns: \o/ sbcl talked to ccl using an ipv6 tcp socket 2014-09-28T09:34:53Z H4ns: (using their new native socket interfaces) 2014-09-28T09:34:54Z tadni: Man, that address book is only 200 lines. 2014-09-28T09:35:26Z beach: tadni: Yeah, that's the standard application style for which CLIM was meant, so it is normal that it is short. 2014-09-28T09:35:48Z beach: tadni: You can write an information system using CLIM in no time at all. 2014-09-28T09:36:10Z oleo is now known as Guest55852 2014-09-28T09:36:35Z tadni: Yeah, I see myself SERIOUSLY looking into CL in a couple months. 2014-09-28T09:36:44Z tadni: Maybe as soon as I get comfy in Emacs. 2014-09-28T09:36:51Z beach: tadni: Great! 2014-09-28T09:37:54Z tadni: Stumpwm, Lispkit, Clim, and Movtiz are really big appeals. 2014-09-28T09:37:55Z oleo__ joined #lisp 2014-09-28T09:38:04Z stassats: too bad that clim is really disappointing once you start using it 2014-09-28T09:38:18Z tadni: stassats: In what ways? 2014-09-28T09:38:31Z beach: tadni: Like I said "I definitely think it is. Others may disagree." 2014-09-28T09:38:45Z stassats: tadni: no good implementation would be a first flaw 2014-09-28T09:38:53Z Guest55852 quit (Ping timeout: 240 seconds) 2014-09-28T09:39:16Z tadni: stassats: What's wrong with mcclim, besides no longer being developed? 2014-09-28T09:40:01Z stassats: many things 2014-09-28T09:40:22Z stassats: and movitz is nothing to be excited about either, it's just a proof of concept 2014-09-28T09:40:25Z jusss quit (Quit: ERC Version 5.2 (IRC client for Emacs)) 2014-09-28T09:41:23Z tadni: stassats: In regards to movitz, yeah, I know, but my general interest is lowish level stuff -- from what I've seen, so it's interesting to see lisp "on the metal" in any capacity. 2014-09-28T09:41:24Z MutSbeta joined #lisp 2014-09-28T09:41:30Z urandom__ joined #lisp 2014-09-28T09:41:58Z malbertife_ quit (Ping timeout: 244 seconds) 2014-09-28T09:42:00Z beach: Oops! 2014-09-28T09:45:15Z beach: OK, so no help for me with the control structure of an AST interpreter? 2014-09-28T09:45:28Z beach: pjb: Any advice? 2014-09-28T09:46:32Z ggole: Control structure? 2014-09-28T09:46:49Z beach: ggole: Iterative, recursive, CPS? 2014-09-28T09:46:49Z ggole: Usually an AST walking interpreter is a fairly simple recursive affair 2014-09-28T09:47:18Z ggole: Iterative is basically recursive + an explicit stack 2014-09-28T09:47:18Z beach: I am hoping a simple recursive structure will do, even in the presence of non-local control transfers. 2014-09-28T09:47:29Z ggole: Good for untrusted input 2014-09-28T09:47:45Z beach: Hmm, yes, I see. 2014-09-28T09:47:46Z ggole: (Since you can introduce explicit safety checks where necessary.) 2014-09-28T09:48:34Z beach: Though so far the only use for it is to test the AST generation from forms. 2014-09-28T09:49:01Z beach: But I see what you mean if it should be used more seriously. 2014-09-28T09:49:03Z ggole: Having an interpreter can be valuable for testing transformations, too 2014-09-28T09:49:04Z jtza8 joined #lisp 2014-09-28T09:49:11Z beach: Yeah. 2014-09-28T09:49:38Z tadni is afk. 2014-09-28T09:49:39Z ggole: Write a fuzzer to generate ASTs, interpret it to see what the value is, run the transform, interpret the result. If there's a difference, there's a bug. 2014-09-28T09:49:53Z ggole: (Modulo undefined behaviour.) 2014-09-28T09:50:21Z beach: Right. 2014-09-28T09:51:40Z ggole: It's not quite so easy because of the possible unboundedness of loops, but that's solvable. 2014-09-28T09:52:02Z ggole: Either by interrupting with a timer, or by jigging your generator to not create such loops, or whatever. 2014-09-28T09:56:47Z gravicappa joined #lisp 2014-09-28T09:57:56Z marvin-hh: Or, you could just prove that your transformation is correct. 2014-09-28T09:58:35Z ggole: That's usually a lot of work. 2014-09-28T09:58:39Z mhneifer left #lisp 2014-09-28T09:58:57Z ggole: It's possible, CompCert has demonstrated that. 2014-09-28T09:59:02Z varjag_ joined #lisp 2014-09-28T10:00:01Z marvin-hh: If you expect that your program exists forever, the costs of proving is lower than running a test forever. 2014-09-28T10:00:37Z marvin-hh: If however, you consider your program to have a relatively small finite lifespan (e.g. less than 5 years), then you can better not do it. 2014-09-28T10:01:07Z marvin-hh: That being said, what's the point of writing the program in the first place then? 2014-09-28T10:02:55Z ggole: There are lots of reasons for writing programs. 2014-09-28T10:03:39Z ggole: Not all of them indicate the need for proof methods. 2014-09-28T10:04:16Z JuanDaugherty quit (Ping timeout: 258 seconds) 2014-09-28T10:08:52Z kcj quit (Remote host closed the connection) 2014-09-28T10:09:28Z pt1 joined #lisp 2014-09-28T10:12:23Z zadock joined #lisp 2014-09-28T10:14:26Z kuzy000_ joined #lisp 2014-09-28T10:15:22Z pt1 quit (Remote host closed the connection) 2014-09-28T10:30:48Z zadock quit (Ping timeout: 250 seconds) 2014-09-28T10:34:01Z puchacz joined #lisp 2014-09-28T10:54:18Z Jesin quit (Ping timeout: 244 seconds) 2014-09-28T10:56:47Z oudeis quit (Quit: This computer has gone to sleep) 2014-09-28T10:58:16Z tomvos joined #lisp 2014-09-28T10:58:19Z hiyosi quit (Ping timeout: 258 seconds) 2014-09-28T11:00:28Z zygentoma joined #lisp 2014-09-28T11:01:42Z Jesin joined #lisp 2014-09-28T11:02:02Z francogrex joined #lisp 2014-09-28T11:03:54Z francogrex: i found what might seem like a good project on github called tre. it's taking ages to build and draining all my resources (hence not even able to open a browser to show you the link) 2014-09-28T11:04:30Z stassats: here's a dime, buy yourself a real computer 2014-09-28T11:04:32Z francogrex: it's supposed to be a transcompiler to c, js, php and bytecode all at the same time 2014-09-28T11:05:07Z francogrex: dime... to be the newest apple? i need a trillion dimes 2014-09-28T11:05:11Z francogrex: buy 2014-09-28T11:05:59Z francogrex: anyway when it's done I'll report back my impressions 2014-09-28T11:07:02Z francogrex: that'll probably be within a week or two :) 2014-09-28T11:12:40Z hiroakip joined #lisp 2014-09-28T11:18:33Z InvalidCo: francogrex: cools 2014-09-28T11:19:02Z leo2007 quit (Ping timeout: 272 seconds) 2014-09-28T11:19:28Z InvalidCo: can you give us some more specific search terms? 2014-09-28T11:21:10Z klltkr joined #lisp 2014-09-28T11:22:37Z urandom__ quit (Quit: Konversation terminated!) 2014-09-28T11:24:19Z hiyosi joined #lisp 2014-09-28T11:28:57Z hiyosi quit (Ping timeout: 260 seconds) 2014-09-28T11:30:53Z jtza8 quit (Ping timeout: 240 seconds) 2014-09-28T11:31:40Z ndrei quit (Ping timeout: 258 seconds) 2014-09-28T11:40:01Z pavanmishra joined #lisp 2014-09-28T11:40:35Z pavanmishra: hi 2014-09-28T11:41:04Z pavanmishra: I am having issues loading a project using quicklisp 2014-09-28T11:41:24Z pavanmishra: just updated my sbcl to 1.2.1 using brew 2014-09-28T11:41:51Z pavanmishra: and (ql:quickload "myproject") had started to SYSTEM-NOT-FOUND 2014-09-28T11:46:59Z Karl_Dscc joined #lisp 2014-09-28T11:51:45Z InvalidCo: pavanmishra: what is the value of ql:*local-project-directories* ? 2014-09-28T11:51:56Z InvalidCo: and is your project directory root in that list? 2014-09-28T11:56:03Z pt1 joined #lisp 2014-09-28T11:56:31Z pt1 quit (Remote host closed the connection) 2014-09-28T11:58:49Z Beetny quit (Ping timeout: 260 seconds) 2014-09-28T12:00:48Z Jesin quit (Ping timeout: 258 seconds) 2014-09-28T12:05:43Z pavanmishra: it seems to be undefined 2014-09-28T12:06:08Z InvalidCo: oh? 2014-09-28T12:06:22Z setheus quit (Ping timeout: 240 seconds) 2014-09-28T12:06:25Z InvalidCo: try setting it to a list of your project directories 2014-09-28T12:06:39Z InvalidCo: (list #p"/path/to/quicklisp/local-projects") 2014-09-28T12:06:51Z stassats: that doesn't sound like a good idea 2014-09-28T12:06:52Z PuercoPop: InvalidCo: did homebrew modified your ~/.sbclrc by anychance? 2014-09-28T12:06:56Z InvalidCo: replace /path/to/quicklisp/ with actual path to quicklisp 2014-09-28T12:08:32Z setheus joined #lisp 2014-09-28T12:09:21Z pavanmishra: .sbclrc is unaffected 2014-09-28T12:09:53Z Nizumzen joined #lisp 2014-09-28T12:11:47Z PuercoPop: pavanmishra: so you are calling the quicklisp init there? is :quicklisp in your *features* 2014-09-28T12:12:12Z pavanmishra: its there in my features 2014-09-28T12:12:25Z pavanmishra: and init is called from rc file 2014-09-28T12:13:31Z PuercoPop: hmm, no idea what could be wrong maybe execute (ql:register-local-projects) as a last ditch effort 2014-09-28T12:16:08Z Grue`: just setup ASDF to search in :tree if everything else fails http://common-lisp.net/project/asdf/asdf.html#Configuring-ASDF-to-find-your-systems 2014-09-28T12:16:32Z stassats: that doesn't sound like a great idea either 2014-09-28T12:17:13Z stassats: InvalidCo: SBCL got recently a new asdf version, which may have changed things incompatibly 2014-09-28T12:17:39Z stassats: InvalidCo: is there a project-name.asd file in local-projects? 2014-09-28T12:17:59Z PuercoPop: maybe (ql:update-client) ? 2014-09-28T12:18:05Z stassats: InvalidCo: does it have slashes or something? 2014-09-28T12:18:44Z pavanmishra: yes there is? 2014-09-28T12:18:57Z pavanmishra: *yes there is 2014-09-28T12:19:02Z stassats: sorry, i'm talking to the wrong nick 2014-09-28T12:20:28Z JuanDaugherty joined #lisp 2014-09-28T12:20:31Z francogrex: InvalidCo: search hithub from the common lisp project pushed > 2014-09-25 (tre) 2014-09-28T12:20:33Z francogrex: that's all 2014-09-28T12:20:50Z pavanmishra: @PuercoPop its latest and greatest 2014-09-28T12:20:54Z francogrex: github 2014-09-28T12:21:05Z francogrex is a bitch at typing 2014-09-28T12:21:06Z stassats: pavanmishra: did you make a typo when writing (ql:quickload "project-name")? 2014-09-28T12:22:16Z Grue`: does it work with 'project-name as argument? 2014-09-28T12:22:38Z stassats: that wouldn't matter 2014-09-28T12:22:44Z Grue`: idk, i always use symbols for this stuff 2014-09-28T12:23:10Z hiroakip quit (Ping timeout: 244 seconds) 2014-09-28T12:23:23Z stassats: and the symbol is always converted into a string 2014-09-28T12:23:48Z pavanmishra: I also updated slime-helper for quicklisp 2014-09-28T12:23:57Z pavanmishra: before things broke 2014-09-28T12:25:05Z hiyosi joined #lisp 2014-09-28T12:26:21Z pavanmishra: where as (load "project.asd") returns true 2014-09-28T12:26:25Z francogrex: hell it's only 67% mem and 0.8% cpu, why is the freaking pc so slow 2014-09-28T12:27:05Z InvalidCo: FracV: aight 2014-09-28T12:27:07Z pavanmishra: it also does not work for newly created projects anymore 2014-09-28T12:27:50Z stassats: pavanmishra: did you install quicklisp anew? into a different directory maybe? 2014-09-28T12:28:08Z InvalidCo: s/FracV/francogrex/ 2014-09-28T12:29:46Z francogrex: here: https://github.com/SvenMichaelKlose/tre 2014-09-28T12:29:58Z hiyosi quit (Ping timeout: 250 seconds) 2014-09-28T12:30:16Z InvalidCo: francogrex: yep 2014-09-28T12:30:18Z hiroakip joined #lisp 2014-09-28T12:30:29Z InvalidCo: just...there's a text editor included 2014-09-28T12:30:34Z InvalidCo: with ansi escape codes? 2014-09-28T12:30:38Z InvalidCo: best! :D 2014-09-28T12:30:52Z stassats: just another toy lisp, lame 2014-09-28T12:31:01Z InvalidCo: and it's vim-like 2014-09-28T12:31:01Z InvalidCo: cools 2014-09-28T12:31:10Z pavanmishra: loading and installing other systems work though 2014-09-28T12:31:13Z francogrex: stassats: I have the vague impression that it will be lame 2014-09-28T12:31:33Z francogrex: but I will try it out 2014-09-28T12:33:04Z InvalidCo: report back 2014-09-28T12:33:30Z francogrex: i will. till then. (taking a break) 2014-09-28T12:33:35Z francogrex quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-09-28T12:38:29Z jtza8 joined #lisp 2014-09-28T12:39:06Z Mon_Ouie quit (Ping timeout: 272 seconds) 2014-09-28T12:39:54Z Neet joined #lisp 2014-09-28T12:46:47Z varjag_ quit (Quit: Connection closed for inactivity) 2014-09-28T12:47:21Z oudeis joined #lisp 2014-09-28T12:47:34Z atgreen quit (Ping timeout: 258 seconds) 2014-09-28T12:55:58Z pavanmishra quit (Remote host closed the connection) 2014-09-28T13:00:59Z jusss joined #lisp 2014-09-28T13:01:13Z drmeiste_ is now known as drmeister_ 2014-09-28T13:02:03Z MouldyOldBones quit (Ping timeout: 264 seconds) 2014-09-28T13:04:52Z hiroakip quit (Ping timeout: 240 seconds) 2014-09-28T13:05:46Z edgar-rft quit (Quit: happening stopped by mental corruption) 2014-09-28T13:06:08Z Adlai quit (Remote host closed the connection) 2014-09-28T13:06:34Z Adlai joined #lisp 2014-09-28T13:14:35Z oudeis quit (Quit: This computer has gone to sleep) 2014-09-28T13:15:21Z MouldyOldBones joined #lisp 2014-09-28T13:15:44Z oudeis joined #lisp 2014-09-28T13:17:21Z ndrei joined #lisp 2014-09-28T13:25:54Z hiyosi joined #lisp 2014-09-28T13:27:03Z wchun quit (Ping timeout: 258 seconds) 2014-09-28T13:28:30Z wchun joined #lisp 2014-09-28T13:31:09Z hiyosi quit (Ping timeout: 272 seconds) 2014-09-28T13:34:32Z jtza8 quit (Ping timeout: 250 seconds) 2014-09-28T13:38:20Z zacharias joined #lisp 2014-09-28T13:41:30Z EvW joined #lisp 2014-09-28T13:48:09Z leo2007 joined #lisp 2014-09-28T13:53:15Z tadni: Is sly actually any better than slime, or is it a DSWM/Stumpwm problem? 2014-09-28T13:55:27Z Mon_Ouie joined #lisp 2014-09-28T13:57:03Z stassats: it's just a ploy to split and confuse people 2014-09-28T13:59:23Z tadni: stassats: Which one(s)? 2014-09-28T13:59:41Z ehu: looking at the differences: is there any reason sly's improvements couldn't have contributed back to slime? 2014-09-28T13:59:57Z pt1 joined #lisp 2014-09-28T14:00:07Z tadni: It seems more like a case of "I can do this better, me thinks, but they aren't accepting my source upstream! Screw them, I'll do it my own way." 2014-09-28T14:01:21Z tadni: ehu: Lack of patience, maybe? 2014-09-28T14:06:36Z TDog quit (Ping timeout: 260 seconds) 2014-09-28T14:06:48Z njsg: oh, (require -whatever-) is sbcl-specific? 2014-09-28T14:07:53Z jdz: clhs require 2014-09-28T14:07:53Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_provid.htm 2014-09-28T14:08:04Z Nizumzen quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2014-09-28T14:11:37Z hiroakip joined #lisp 2014-09-28T14:20:09Z baotiao quit (Quit: baotiao) 2014-09-28T14:21:12Z uselpa joined #lisp 2014-09-28T14:21:20Z jeremyheiler joined #lisp 2014-09-28T14:23:09Z uselpa quit (Client Quit) 2014-09-28T14:25:59Z tadni: Is Scheme worth learning, just for SICP? 2014-09-28T14:26:40Z oleo__: not just for SICP 2014-09-28T14:26:47Z hiyosi joined #lisp 2014-09-28T14:26:51Z oleo__ quit (Quit: Verlassend) 2014-09-28T14:26:54Z stassats: tadni: not really 2014-09-28T14:27:17Z tadni: oleo__: I was considering learning Scheme, to implement it in Elisp, as a gas. 2014-09-28T14:27:37Z tadni: Too* 2014-09-28T14:28:33Z hitecnologys joined #lisp 2014-09-28T14:28:52Z tadni: Already have a name, "Yashi" (pronounced Yahtzee) for "Yet Another Horrible Scheme Implementation". 2014-09-28T14:29:00Z tadni: Yahsi* 2014-09-28T14:29:31Z tadni: This is still several months away, so I have time to think about it -- regardless. 2014-09-28T14:30:23Z oleo joined #lisp 2014-09-28T14:31:22Z hiyosi quit (Ping timeout: 240 seconds) 2014-09-28T14:32:08Z stassats: if you want to talk about scheme, #scheme 2014-09-28T14:32:49Z tadni: Well, I wanted a biased viewpoint against it, not for it. 2014-09-28T14:33:13Z tadni: I already think it's a good idea, I want to see if there are any excuses against going that way. 2014-09-28T14:37:23Z fortitude joined #lisp 2014-09-28T14:39:15Z beach: tadni: If you have unlimited amount of time, you should learn as much as you possibly can. 2014-09-28T14:39:52Z beach: tadni: If not, you have to prioritize. It is hard to give you help with your priorities. 2014-09-28T14:41:23Z kobain joined #lisp 2014-09-28T14:41:52Z beach: tadni: If you are going to implement a programming language, I strongly recommend you read "Lisp in Small Pieces". It covers Scheme and Common Lisp and some other dialects too, in that it refers to different strategies for different dialects. 2014-09-28T14:42:18Z tadni: beach: Will add to bookmarks, thanks. 2014-09-28T14:42:45Z beach: tadni: But it is hard to implement a language if you don't master it. 2014-09-28T14:43:02Z tadni: beach: Yeah understood. 2014-09-28T14:43:31Z attila_lendvai joined #lisp 2014-09-28T14:43:31Z attila_lendvai quit (Changing host) 2014-09-28T14:43:31Z attila_lendvai joined #lisp 2014-09-28T14:44:19Z loke_: I'm definitely not a CFFI expert, and I'm having the hardest time trying to use the groveller to create a (set of) constants that has the values of the fields on a C enum 2014-09-28T14:44:22Z loke_: is this possible? 2014-09-28T14:44:54Z stassats: defenum or something? 2014-09-28T14:45:19Z loke_: Well, I'd like to use the groveller to find the vauels 2014-09-28T14:45:52Z loke_: there is CENUM, but that one defines only keywords that are returned (and can be passed) to cfunctions that are declared to use that type 2014-09-28T14:46:35Z ans: so how uncool would it be to reuse the pathname type for something other than filesystem paths? im inferring dbus types and i need to recognize object paths which usually come as strings like "/org/freedesktop/NetworkManager" to differentiate them from real strings 2014-09-28T14:46:54Z loke_: ans: very uncool 2014-09-28T14:47:11Z ans: shucks 2014-09-28T14:48:55Z stassats: (defstruct dbus-type) 2014-09-28T14:49:56Z Kaisyu joined #lisp 2014-09-28T14:50:52Z hiroakip quit (Ping timeout: 240 seconds) 2014-09-28T14:52:58Z hiyosi joined #lisp 2014-09-28T14:53:02Z tadni has some things to think about. 2014-09-28T14:53:36Z tadni: I'll bbl probably, I'm going to mow my GPa's lawn. Peace peeps. o/ 2014-09-28T14:53:38Z tadni is AFK. 2014-09-28T14:58:22Z zacharias quit (Ping timeout: 240 seconds) 2014-09-28T15:01:29Z zlrth joined #lisp 2014-09-28T15:04:09Z ndrei quit (Ping timeout: 272 seconds) 2014-09-28T15:04:23Z jusss quit (Quit: ERC Version 5.2 (IRC client for Emacs)) 2014-09-28T15:05:37Z ndrei joined #lisp 2014-09-28T15:14:18Z ndrei quit (Ping timeout: 246 seconds) 2014-09-28T15:16:41Z Nizumzen joined #lisp 2014-09-28T15:19:22Z farhaven quit (Ping timeout: 240 seconds) 2014-09-28T15:21:19Z farhaven joined #lisp 2014-09-28T15:21:40Z ndrei joined #lisp 2014-09-28T15:33:52Z Mon_Ouie quit (Ping timeout: 260 seconds) 2014-09-28T15:34:01Z ndrei quit (Ping timeout: 272 seconds) 2014-09-28T15:34:12Z MutSbeta quit (Remote host closed the connection) 2014-09-28T15:35:39Z Adlai quit (Ping timeout: 264 seconds) 2014-09-28T15:36:22Z chitofan quit (Ping timeout: 246 seconds) 2014-09-28T15:37:46Z bgs100 joined #lisp 2014-09-28T15:40:03Z hiroakip joined #lisp 2014-09-28T15:40:23Z Adlai joined #lisp 2014-09-28T15:40:57Z MutSbeta joined #lisp 2014-09-28T15:44:27Z housel` joined #lisp 2014-09-28T15:44:38Z zn joined #lisp 2014-09-28T15:46:03Z zeebrah quit (Ping timeout: 272 seconds) 2014-09-28T15:46:29Z nell joined #lisp 2014-09-28T15:47:50Z jtz quit (Ping timeout: 246 seconds) 2014-09-28T15:47:50Z housel quit (Ping timeout: 246 seconds) 2014-09-28T15:47:57Z ltbarcly joined #lisp 2014-09-28T15:49:28Z gluegadget joined #lisp 2014-09-28T15:53:19Z oudeis quit (Quit: This computer has gone to sleep) 2014-09-28T15:55:09Z ans quit (Quit: ZNC - http://znc.in) 2014-09-28T15:55:30Z jeremyheiler quit (Quit: Textual IRC Client: www.textualapp.com) 2014-09-28T15:56:46Z ans joined #lisp 2014-09-28T16:00:15Z Nizumzen quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2014-09-28T16:00:58Z phao joined #lisp 2014-09-28T16:03:53Z innertracks joined #lisp 2014-09-28T16:05:46Z varjag_ joined #lisp 2014-09-28T16:05:46Z yacks quit (Quit: Leaving) 2014-09-28T16:10:21Z sdemarre quit (Ping timeout: 260 seconds) 2014-09-28T16:11:17Z vlnx quit (Ping timeout: 260 seconds) 2014-09-28T16:13:13Z vlnx joined #lisp 2014-09-28T16:14:58Z nell quit (Quit: WeeChat 1.1-dev) 2014-09-28T16:16:23Z MrWoohoo quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-09-28T16:16:49Z jackdaniel quit (Ping timeout: 260 seconds) 2014-09-28T16:17:28Z anunnaki quit (Ping timeout: 250 seconds) 2014-09-28T16:18:53Z abeaumont_ quit (Ping timeout: 240 seconds) 2014-09-28T16:19:40Z jeremyheiler joined #lisp 2014-09-28T16:19:55Z nell joined #lisp 2014-09-28T16:21:46Z DTSCode joined #lisp 2014-09-28T16:24:55Z malbertife joined #lisp 2014-09-28T16:25:43Z ltbarcly quit (Quit: Computer has gone to sleep.) 2014-09-28T16:26:15Z malbertife quit (Client Quit) 2014-09-28T16:26:36Z malbertife joined #lisp 2014-09-28T16:32:02Z phax joined #lisp 2014-09-28T16:32:12Z phax quit (Changing host) 2014-09-28T16:32:13Z phax joined #lisp 2014-09-28T16:32:20Z malbertife_ joined #lisp 2014-09-28T16:34:48Z malbertife quit (Ping timeout: 246 seconds) 2014-09-28T16:35:13Z resttime joined #lisp 2014-09-28T16:37:24Z phao quit (Ping timeout: 250 seconds) 2014-09-28T16:39:42Z phao joined #lisp 2014-09-28T16:40:38Z stassats quit (Ping timeout: 258 seconds) 2014-09-28T16:41:57Z vlnx quit (Ping timeout: 245 seconds) 2014-09-28T16:42:51Z Kaisyu quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-09-28T16:42:56Z ndrei joined #lisp 2014-09-28T16:44:05Z vlnx joined #lisp 2014-09-28T16:46:56Z innertracks quit (Quit: innertracks) 2014-09-28T16:48:00Z Kenjin quit (Remote host closed the connection) 2014-09-28T16:50:30Z innertracks joined #lisp 2014-09-28T16:51:59Z mrSpec joined #lisp 2014-09-28T16:52:36Z bcoburn quit (Remote host closed the connection) 2014-09-28T16:53:09Z ben__ joined #lisp 2014-09-28T16:53:59Z hitecnologys quit (Quit: hitecnologys) 2014-09-28T16:54:51Z mhd joined #lisp 2014-09-28T16:57:34Z ben__ is now known as bcoburn 2014-09-28T16:57:48Z ehu_ joined #lisp 2014-09-28T16:59:27Z ehu quit (Ping timeout: 245 seconds) 2014-09-28T17:00:56Z bcoburn quit (Remote host closed the connection) 2014-09-28T17:03:10Z attila_lendvai quit (Quit: Leaving.) 2014-09-28T17:06:02Z vlnx quit (Ping timeout: 245 seconds) 2014-09-28T17:07:26Z vlnx joined #lisp 2014-09-28T17:08:33Z jackdaniel joined #lisp 2014-09-28T17:08:35Z anunnaki joined #lisp 2014-09-28T17:08:55Z fr3aksken joined #lisp 2014-09-28T17:11:07Z freaksken quit (Ping timeout: 245 seconds) 2014-09-28T17:11:07Z fr3aksken is now known as freaksken 2014-09-28T17:11:43Z nand1 quit (Read error: Connection reset by peer) 2014-09-28T17:13:12Z shka joined #lisp 2014-09-28T17:13:16Z shka: hi 2014-09-28T17:13:25Z shka: can i pass lambda expression to the macro? 2014-09-28T17:14:13Z hiroakip quit (Ping timeout: 260 seconds) 2014-09-28T17:15:47Z dlowe: shka: yes, the macro will receive the tree describing the lambda expression 2014-09-28T17:16:24Z shka: but i want to write a macro that gets function and will funcall it 2014-09-28T17:16:34Z pjb: no, you cannot do that. 2014-09-28T17:16:38Z shka: ok 2014-09-28T17:17:04Z pjb: You can write a macro that gets the name of a function and that generates a form that calls it. 2014-09-28T17:17:29Z pjb: (defmacro m (funame) `(,funame 42)) (m sin) (m (lambda (x) (* 2 x))) 2014-09-28T17:17:56Z shka: ok 2014-09-28T17:18:12Z pt1 quit (Remote host closed the connection) 2014-09-28T17:18:30Z Kenjin joined #lisp 2014-09-28T17:18:36Z pjb: shka: for a macro to call a function, that function must be defined in the compilation environment. 2014-09-28T17:18:54Z shka: right 2014-09-28T17:18:57Z shka: that makes sense 2014-09-28T17:19:28Z pjb: (eval-when (:compile-toplevel) (defun square (x) (* 2 x))) (defmacro m2 (x) `(list ',x ,(square 42))) (m2 (^ 42 2)) 2014-09-28T17:19:47Z stassats joined #lisp 2014-09-28T17:20:27Z loke_ quit (Remote host closed the connection) 2014-09-28T17:20:49Z KCL joined #lisp 2014-09-28T17:23:26Z innertracks quit (Quit: innertracks) 2014-09-28T17:24:00Z KCL_ quit (Ping timeout: 260 seconds) 2014-09-28T17:24:04Z pjb: shka: so, you can take a lambda expression passed to the macro, and compile it into a function at macro expansion to, so you may call this function: (defmacro mm (le) (let ((fun (compile nil le))) (funcall fun))) (mm (lambda () '(progn (print 'hello) (print 'world) 33))) 2014-09-28T17:24:06Z Grue`: shka: if you need to funcall that function *after* macroexpanding, then yes, you can pass lambda expression since they are funcallable 2014-09-28T17:24:41Z defaultxr joined #lisp 2014-09-28T17:24:52Z pjb: shka: but since compile doesn't take a &environment parameter, the lambda expression cannot refer to lexical bindings. 2014-09-28T17:25:01Z stassats quit (Ping timeout: 260 seconds) 2014-09-28T17:26:49Z Kenjin quit (Ping timeout: 260 seconds) 2014-09-28T17:27:20Z innertracks joined #lisp 2014-09-28T17:28:00Z vlnx quit (Ping timeout: 246 seconds) 2014-09-28T17:29:12Z yacks joined #lisp 2014-09-28T17:30:07Z vlnx joined #lisp 2014-09-28T17:31:17Z mhd quit (Quit: Textual IRC Client: www.textualapp.com) 2014-09-28T17:32:09Z notzmv joined #lisp 2014-09-28T17:36:58Z drmeister_ quit (Remote host closed the connection) 2014-09-28T17:37:01Z aftershave quit (Quit: Textual IRC Client: www.textualapp.com) 2014-09-28T17:37:20Z drmeiste_ joined #lisp 2014-09-28T17:37:39Z drmeiste_ is now known as drmeister_ 2014-09-28T17:38:26Z oudeis joined #lisp 2014-09-28T17:40:08Z innertracks quit (Quit: innertracks) 2014-09-28T17:41:04Z nand1 joined #lisp 2014-09-28T17:43:13Z beach left #lisp 2014-09-28T17:48:18Z francogrex joined #lisp 2014-09-28T17:48:58Z francogrex: I promised I would report back on my experience with a new github project (tre): don't waste your time it is incredibly lame 2014-09-28T17:52:30Z ltbarcly joined #lisp 2014-09-28T17:52:35Z normanrichards joined #lisp 2014-09-28T17:52:36Z normanrichards quit (Read error: Connection reset by peer) 2014-09-28T17:54:25Z oudeis quit (Quit: This computer has gone to sleep) 2014-09-28T17:54:33Z francogrex quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2014-09-28T17:54:36Z ltbarcly quit (Client Quit) 2014-09-28T17:57:01Z ltbarcly joined #lisp 2014-09-28T17:57:35Z ben__ joined #lisp 2014-09-28T17:58:07Z stassats joined #lisp 2014-09-28T17:59:01Z MutSbeta quit (Quit: Leaving.) 2014-09-28T18:00:48Z stopbit quit (Quit: Quitting.) 2014-09-28T18:03:40Z stassats quit (Ping timeout: 260 seconds) 2014-09-28T18:13:10Z ben__ is now known as bcoburn 2014-09-28T18:16:07Z innertracks joined #lisp 2014-09-28T18:16:59Z drdanmaku joined #lisp 2014-09-28T18:21:44Z ltbarcly quit (Quit: Computer has gone to sleep.) 2014-09-28T18:21:50Z shka quit (Ping timeout: 258 seconds) 2014-09-28T18:22:15Z Ven joined #lisp 2014-09-28T18:23:01Z gravicappa quit (Ping timeout: 272 seconds) 2014-09-28T18:24:40Z oudeis joined #lisp 2014-09-28T18:29:39Z klltkr quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-09-28T18:30:12Z teiresia1 is now known as teiresias 2014-09-28T18:30:43Z fikusz joined #lisp 2014-09-28T18:30:59Z tomvos quit (Quit: tomvos) 2014-09-28T18:32:03Z ehu_ is now known as ehu 2014-09-28T18:35:57Z tadni: Are there any version control systems in Lisp? It seems like such a thing would be easier to implement than in other langs. 2014-09-28T18:39:05Z bcoburn quit (Remote host closed the connection) 2014-09-28T18:39:12Z hiroakip joined #lisp 2014-09-28T18:48:41Z try-catch-throw joined #lisp 2014-09-28T18:49:41Z pjb: tadni: there's darcs written in haskell. 2014-09-28T18:52:09Z tadni: Is haskell known, for being good with manipulating text, like Lisp? 2014-09-28T18:52:54Z Grue`: is lisp known to be particularly good with manipulating text? 2014-09-28T18:52:58Z klltkr joined #lisp 2014-09-28T18:53:01Z |3b| thought perl was the one with the reputation for manipulating text 2014-09-28T18:53:15Z tadni: Grue`: I mean, it seems like it'd be great. 2014-09-28T18:53:16Z Grue`: Tcl! 2014-09-28T18:54:11Z tadni: (cons "hello" '("world")) ? 2014-09-28T18:54:27Z tadni: Is this as easy to do in other langs? 2014-09-28T18:54:36Z Grue`: more like (concatenate 'string "hello " "world") 2014-09-28T18:54:39Z tadni: I'm sure there is a proper way to combine strings too. 2014-09-28T18:54:42Z shka joined #lisp 2014-09-28T18:54:50Z shka: damn html generation 2014-09-28T18:54:54Z Grue`: which is probably the longest default concatenation operator in any language 2014-09-28T18:55:13Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2014-09-28T18:55:17Z shka: using cl-markup macros for html generation is difficult 2014-09-28T18:55:18Z clop2: it is the worst 2014-09-28T18:55:18Z Grue`: well there is FORMAT 2014-09-28T18:55:35Z clop2: (cat "foo" "bar" "baz" ... ) is pretty good though 2014-09-28T18:55:42Z normanrichards joined #lisp 2014-09-28T18:55:42Z normanrichards quit (Read error: Connection reset by peer) 2014-09-28T18:56:48Z tadni: Grue`: What's the problem, that it's a little verbose? 2014-09-28T18:56:58Z rtoym quit (Remote host closed the connection) 2014-09-28T18:58:02Z Grue`: yeah, well theoretically it can concatenate other types of sequences but still 2014-09-28T18:58:21Z dfox quit (Ping timeout: 260 seconds) 2014-09-28T18:58:35Z meiji11 joined #lisp 2014-09-28T18:58:38Z tadni: It looks good enough to me, and I'm pretty strict with syntax conventions -- for not knowing anything about anything. 2014-09-28T18:58:45Z shka: somebody have problem with contactanate? 2014-09-28T18:59:06Z shka: just write a lttle function and forget about it 2014-09-28T18:59:12Z shka: or even a method 2014-09-28T18:59:29Z shka: so you will have method glue for all sequences :P 2014-09-28T18:59:34Z dfox joined #lisp 2014-09-28T18:59:59Z shka: ah, moment, this can be defined as a macro that will define method 2014-09-28T19:00:20Z Grue`: nah I usually type it all out, because next thing you know, you'll want to convert the whole thing to (with-output-to-string (s) ... ) anyway 2014-09-28T19:00:36Z hiyosi quit (Ping timeout: 260 seconds) 2014-09-28T19:01:12Z |3b| isn't sure "manipulating text" is even all that important to a version control system these days 2014-09-28T19:01:28Z Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-09-28T19:01:47Z shka: ah, no sorry 2014-09-28T19:01:47Z Grue`: what's important is pathnames, and that's where lisp sucks ;) 2014-09-28T19:01:54Z shka: no rest for method 2014-09-28T19:02:08Z shka: Grue`: meh 2014-09-28T19:02:10Z Ven joined #lisp 2014-09-28T19:02:17Z shka: there is one that i don't like i common lisp 2014-09-28T19:02:34Z shka: lack of abstraction for collections manipulations 2014-09-28T19:02:36Z tadni: Why would CL be bad with pathnames? 2014-09-28T19:02:58Z shka: so oyu can't write code that will deal with hashtable and list in uniform manner 2014-09-28T19:03:02Z Grue`: because it was designed when filesystems were different 2014-09-28T19:03:41Z tadni: Grue`: Were they decent back then and we just adopted something new, or are they clearly superior now? 2014-09-28T19:04:19Z Grue`: i think it's just that there were more of them than there are now, and CL had to support everything, and as a result the standard is very messy 2014-09-28T19:05:19Z kobain joined #lisp 2014-09-28T19:06:33Z tadni: EVERYTHING IS HORRIBLE. :^) 2014-09-28T19:08:30Z normanrichards joined #lisp 2014-09-28T19:08:30Z normanrichards quit (Read error: Connection reset by peer) 2014-09-28T19:08:32Z Patzy quit (Ping timeout: 245 seconds) 2014-09-28T19:08:49Z janmuffino quit (Ping timeout: 246 seconds) 2014-09-28T19:09:16Z schaueho quit (Ping timeout: 244 seconds) 2014-09-28T19:09:17Z Patzy joined #lisp 2014-09-28T19:10:32Z shka quit (Quit: WeeChat 1.0) 2014-09-28T19:14:57Z oudeis quit (Ping timeout: 244 seconds) 2014-09-28T19:15:48Z nell quit (Quit: WeeChat 1.1-dev) 2014-09-28T19:17:12Z mearnsh quit (Ping timeout: 272 seconds) 2014-09-28T19:17:19Z normanrichards joined #lisp 2014-09-28T19:17:20Z normanrichards quit (Read error: Connection reset by peer) 2014-09-28T19:18:36Z ltbarcly joined #lisp 2014-09-28T19:24:23Z lifenoodles quit (Ping timeout: 240 seconds) 2014-09-28T19:25:04Z jtza8 joined #lisp 2014-09-28T19:26:58Z mearnsh joined #lisp 2014-09-28T19:28:52Z puchacz quit (Quit: Konversation terminated!) 2014-09-28T19:29:11Z lifenoodles joined #lisp 2014-09-28T19:32:00Z zlrth quit (Ping timeout: 244 seconds) 2014-09-28T19:32:22Z drmeister quit (Ping timeout: 258 seconds) 2014-09-28T19:32:24Z mearnsh quit (Ping timeout: 272 seconds) 2014-09-28T19:36:13Z drmeister joined #lisp 2014-09-28T19:39:52Z johnyc joined #lisp 2014-09-28T19:39:56Z noncom quit (Ping timeout: 256 seconds) 2014-09-28T19:41:28Z ltbarcly quit (Quit: Computer has gone to sleep.) 2014-09-28T19:43:14Z mearnsh joined #lisp 2014-09-28T19:48:38Z try-catch-throw left #lisp 2014-09-28T19:48:41Z hiroakip quit (Ping timeout: 260 seconds) 2014-09-28T19:49:17Z inginist joined #lisp 2014-09-28T19:50:04Z inginist: could anyone help me with crane orm? 2014-09-28T19:51:04Z inginist: crane is this very simple and readable orm, but it has been breaking one place or the other 2014-09-28T19:51:25Z inginist: currently trying to create a table with foreign key 2014-09-28T19:51:30Z inginist: and getting error 2014-09-28T19:51:40Z inginist: attempt to use VALUES-LIST on a dotted list: T 2014-09-28T19:51:40Z inginist: [Condition of type SIMPLE-TYPE-ERROR] 2014-09-28T19:52:11Z dim: my take: don't use an ORM that way, or at all 2014-09-28T19:52:55Z dim: remember that any SQL query is strongly typed and that is what is named a "relation", so your ORM should allow mapping any query's result to your application objects 2014-09-28T19:53:05Z dim: it's more often called a DAO than an ORM 2014-09-28T19:53:14Z dim: and Postmodern's DAO is perfect for that 2014-09-28T19:54:11Z inginist: thanks @ 2014-09-28T19:54:13Z dfox quit (Ping timeout: 272 seconds) 2014-09-28T19:54:55Z dim: also, please just manage your schema in SQL, and in particular your schema migrations too 2014-09-28T19:55:03Z hiroakip joined #lisp 2014-09-28T19:55:32Z |3b| thinks both are valid ways of working, just don't mix them :p 2014-09-28T19:55:50Z dim: alter table is full of subtle traps, think about a model where in v1 there a column foo, in v2 your remove it and in v3 you add it again; now you push the automated migration to production, and you lose the data in the column... 2014-09-28T19:56:01Z |3b|: if you are using a magic orm that manages everything for you, SQL is just an implementation detail 2014-09-28T19:56:15Z dim: but in reality it never is. 2014-09-28T19:56:20Z hiyosi joined #lisp 2014-09-28T19:56:41Z dim: we need someone to work on https://github.com/krisajenkins/yesql for CL, too ;-) 2014-09-28T19:56:52Z |3b|: sure, and performance is important too, but doesn't mean we should be worried about it /now/ 2014-09-28T19:57:12Z dim: SQL is all about application design 2014-09-28T19:57:30Z |3b|: not every application is about application design :p 2014-09-28T19:57:33Z dim: it's just that a part of the application will be written in SQL rather than in the application languages 2014-09-28T19:57:53Z dim: and actually, it just means that SQL is one of the app languages 2014-09-28T19:57:57Z johnyc quit (Quit: IRCGate CGI:IRC User (Ping timeout)) 2014-09-28T19:58:09Z |3b|: lots of applications could do just fine with READ and WRITE 2014-09-28T19:58:37Z dim: let's simplify it down to this: as soon as you do a JOIN in a SQL query, you just implemented a part of the application code right into the SQL query 2014-09-28T19:59:06Z inginist: crane builds on https://github.com/fukamachi/sxql 2014-09-28T19:59:23Z lifenoodles quit (Ping timeout: 244 seconds) 2014-09-28T19:59:44Z dim: SQL is about data processing, not serialisation, and RDBMS are about *concurency*, not serialisation: you didn't need an RDBMS to store and retrieve data from long term storage even in the 70s 2014-09-28T19:59:47Z |3b|: right, and lots of applications don't need to do JOINs 2014-09-28T19:59:59Z dim: I'm yet to see a single one in that category 2014-09-28T20:00:18Z dim: that doesn't mean they don't exist, and beware that I'm more a DBA than a developer these days 2014-09-28T20:00:20Z |3b| points at all the applications that don't use a DB at all :p 2014-09-28T20:00:35Z dim: try `man join` 2014-09-28T20:00:51Z dim: you don't need a DB to need to join relations ;-) 2014-09-28T20:01:00Z dim: but here we were talking about ORM and SQL in specifics... 2014-09-28T20:01:11Z hiyosi quit (Ping timeout: 272 seconds) 2014-09-28T20:01:36Z dim: SxQL - A SQL generator. 2014-09-28T20:01:50Z dim: ok, inginist, my take: just don't use that, learn how to write SQL, your life will only get better 2014-09-28T20:02:27Z rtra` joined #lisp 2014-09-28T20:02:30Z yuv- joined #lisp 2014-09-28T20:02:36Z ltbarcly joined #lisp 2014-09-28T20:03:35Z dim is quite opinionated on that, with field experience covering the position 2014-09-28T20:03:36Z Grue`: writing raw sql is like coding in assembly 2014-09-28T20:04:03Z |3b| won't argue with that, learning is good :) 2014-09-28T20:04:07Z Bike: educational, occasionally useful? 2014-09-28T20:04:14Z dim: it's true in that SQL is a programming language and that an ORM actually is a compiler; I wish ORM coders knew they were writing a compiler 2014-09-28T20:04:42Z lifenoodles joined #lisp 2014-09-28T20:05:04Z dim: it's untrue in that SQL is declarative: you explain your problem to the computer, in ASM you explain in great details what you think the solution is 2014-09-28T20:05:20Z Jesin joined #lisp 2014-09-28T20:05:25Z |3b| thinks most of my recent DB use only needs JOINs because of normalization, which is arguably an implementation detail too 2014-09-28T20:05:50Z dim: |3b|: what is your application value without the data? 2014-09-28T20:06:01Z rtra quit (Ping timeout: 260 seconds) 2014-09-28T20:06:01Z rtra` is now known as rtra 2014-09-28T20:06:11Z dim: in most case I wouldn't call the data model an implementation detail 2014-09-28T20:07:03Z dim: as a good algorithm is mostly about the data structures, most applications are about their data model 2014-09-28T20:07:13Z |3b|: if i enter a word and a few numbers as a single entry, as a user i don't care if that word is duplicated internally or not 2014-09-28T20:07:44Z |3b|: due to premature optimization, it is probably split into a separate table to avoid duplication 2014-09-28T20:07:49Z dim: as the developer, you want to have the data model that makes it simpler to support the user experiences you want to achieve 2014-09-28T20:08:11Z thepreacher joined #lisp 2014-09-28T20:08:27Z dim: IMV it's more about being able to serve end-users, accountants, marketing people and backoffice teams 2014-09-28T20:08:37Z |3b|: it could just have easily been a flat file, csv or whatever 2014-09-28T20:08:41Z |3b| has 2 users 2014-09-28T20:08:55Z inginist: may be ddl is better done with sql 2014-09-28T20:08:59Z dim: it's about the roles more than the users, the same user may have several roles 2014-09-28T20:09:03Z mcc joined #lisp 2014-09-28T20:09:04Z |3b|: worrying about accountants, marketing, backoffice team, etc is premature optimization... a generic ORM would have been fine 2014-09-28T20:09:16Z Vivitron` joined #lisp 2014-09-28T20:09:18Z dim: ok then 2014-09-28T20:09:31Z dim: I'll be happy to help when you contract me to fix it anyway ;-) 2014-09-28T20:09:42Z dim: sorry about that line, it's way pretentious 2014-09-28T20:09:46Z Grue`: ime some of the shittiest code I had to maintain involved raw sql concatenated with user input when it could've been in much clearer way with ORM 2014-09-28T20:09:49Z dim: I'd rather go sleep instead 2014-09-28T20:09:51Z Grue`: (and safer) 2014-09-28T20:10:33Z dim: just use the right API to make it safer, which is pgQueryParams with PostgreSQL, and that is exposed at the protocol level where you can send the query text and its arguments separately 2014-09-28T20:10:36Z thepreacher quit (Client Quit) 2014-09-28T20:10:49Z dim: I won't trust any other code than the PostgreSQL backend to actually parse my queries, thanks 2014-09-28T20:11:14Z |3b| doesn't trust it either, but i don't have a choice :p 2014-09-28T20:11:44Z Grue`: because psql types always map perfectly to native types of the language I'm using it from 2014-09-28T20:11:46Z dim: at least I know who fixes pg parser/planner/optimiser bugs, and how ;-) 2014-09-28T20:11:55Z resttime: i'm curious, how do CLOS objects get translated to be storable in a database? 2014-09-28T20:12:04Z |3b|: resttime: 'magic' :p 2014-09-28T20:12:08Z dim: Grue`: CREATE TYPE makes it easy enough for it to be true 2014-09-28T20:12:15Z Grue`: I can't send a, say, Python list to psql, I need to convert it to whatever it accepts 2014-09-28T20:12:17Z |3b|: (or more precisely, how ever you tell it to) 2014-09-28T20:12:28Z dim: that's the real power of PostgreSQL, it's extensible in that it allows you, at runtime, to definer proper data types 2014-09-28T20:12:56Z mearnsh quit (Ping timeout: 272 seconds) 2014-09-28T20:13:12Z mcc: Hi-- I am learning Common LISP given a long-ago background with white-label lisp. I am particularly interested in CLOS/MOP. What would you recommend if I want to get familiar with those two things? 2014-09-28T20:13:13Z dim: Grue`: you can actually just send a Python list to psql, in form of an pgsql array, without any parsing, and any decent driver will allow you to do just that (e.g. psycopg2) 2014-09-28T20:13:18Z |3b|: resttime: frequently people define a special metaclass for objects that are synced to DB, which knows how to serialize the components of the object or map it to DB tables 2014-09-28T20:13:24Z mcc: I am starting by just reading through whatever I find on google under "CLOS tutorial" 2014-09-28T20:13:40Z dim: mcc: Practical Common Lisp has two introductory chapters about that 2014-09-28T20:13:52Z Grue`: yeah PCL will get you up to speed 2014-09-28T20:13:53Z mcc: I'm a little confused by the CLOS/MOP dichtomy though. Do I want to start out by knowing/learning MOP? MOP is just CLOS plus extra methods right? 2014-09-28T20:13:59Z mcc: OK, i think someone in this channel recommended that book to me 2014-09-28T20:14:05Z resttime: |3b|, hmmm, so a defmacro that makes a CLOS object and also stores the slot names to a list? 2014-09-28T20:14:15Z resttime: then when DB ranslation, read all slots with that list? 2014-09-28T20:14:16Z |3b|: MOP is extra stuff for programming CLOS itself... start with CLOS 2014-09-28T20:14:35Z |3b|: resttime: no, a metaclass not a macro 2014-09-28T20:14:46Z mcc: ok, thank you 2014-09-28T20:15:16Z resttime: metaclass, first i ever heard about it hmmm 2014-09-28T20:15:19Z |3b|: 'metaclass' is a MOP concept 2014-09-28T20:15:33Z mearnsh joined #lisp 2014-09-28T20:15:35Z |3b|: if you are still learning CLOS, you probably shouldn't worry about it for now 2014-09-28T20:16:16Z |3b| suspects even most people who know CL and CLOS well don't worry about MOP 2014-09-28T20:16:28Z resttime: kk 2014-09-28T20:16:52Z dim: mcc: http://www.gigamonkeys.com/book/object-reorientation-generic-functions.html and http://www.gigamonkeys.com/book/object-reorientation-classes.html 2014-09-28T20:16:54Z dim: well if you want to do some magic with json encoding you unfortunately already have to go fetch a MOP (closer-mop is the one I've been hinted to use) 2014-09-28T20:17:22Z dim: but, well, good night this time ;-) 2014-09-28T20:17:41Z Grue`: great, I conjugated every Japanese verb and then conjugated every conjugation of Japanese verb, it only took 2 hours or so 2014-09-28T20:17:50Z Grue`: I hope there are no 3rd level conjugations 2014-09-28T20:17:57Z |3b|: dim: closer-mop is more of a portability layer over the implementations' MOP rather than 'a MOP' in itself.... generally you should be using closer-mop if you are doing MOP stuff though 2014-09-28T20:18:34Z |3b|: Grue`: from what i could tell, you can extend them indefinitely with the "turn verb into adjective" and "turn adjective into verb" stuff :p 2014-09-28T20:18:53Z Grue`: I don't like this one bit :) 2014-09-28T20:19:19Z |3b| suspects native speakers wouldn't actually do that much though 2014-09-28T20:21:55Z mcc: dim: thanks for the references. 2014-09-28T20:22:15Z |3b|: minion: tell mcc about keene 2014-09-28T20:22:16Z minion: keene: No definition was found in the first 5 lines of http://www.cliki.net/keene 2014-09-28T20:23:03Z |3b|: hmm, thought minion knew about that book directly... 2014-09-28T20:23:30Z |3b|: mcc: see that link for another book about CLOS (not freely available that i know of though) 2014-09-28T20:23:32Z mcc: |3b| Oh, that's useful! Do you know if there's an ebook version? 2014-09-28T20:23:42Z |3b|: no idea 2014-09-28T20:23:52Z mcc: i am ok with paying money for resources but owning physical objects is very difficult for me right now 2014-09-28T20:24:17Z mcc: thx 2014-09-28T20:24:20Z lifenoodles quit (Ping timeout: 272 seconds) 2014-09-28T20:24:20Z |3b|: minion: amop 2014-09-28T20:24:20Z minion: amop: The Art of the Metaobject Protocol, an essential book for understanding the implementation of CLOS and advanced OO. See the sepcification of MOP at http://www.alu.org/mop/ 2014-09-28T20:24:41Z mcc: i'm mostly interested in the mop because i am used to doing very weird things with oo in lua and objc :P 2014-09-28T20:24:43Z mearnsh quit (Ping timeout: 272 seconds) 2014-09-28T20:24:47Z mcc: but maybe CLOS is flexible enough by itself to do such things 2014-09-28T20:24:48Z |3b|: ^ is the book about MOP, but it is pretty dense 2014-09-28T20:25:32Z |3b|: definitely start with figuring out CLOS by itself then, it is a different style of OO from most popular languages 2014-09-28T20:25:57Z pjb: - 2014-09-28T20:26:41Z Kenjin joined #lisp 2014-09-28T20:27:00Z |3b|: MOP does let you do fairly weird things, though users of other languages probably consider CLOS in general weird to start with :) 2014-09-28T20:27:09Z mearnsh joined #lisp 2014-09-28T20:27:23Z mcc: ok 2014-09-28T20:28:11Z |3b|: in particular people coming from other languages have trouble with methods belonging to generic functions instead of 'data' objects 2014-09-28T20:28:14Z pjb: so CLOS: weird, MOP: weirder than weird. 2014-09-28T20:28:42Z resttime: found a presentation about MOP https://faculty.washington.edu/ikalet/courses/lisp/clos-mop.pdf 2014-09-28T20:28:51Z resttime: MOP does seem pretty neat 2014-09-28T20:29:14Z lifenoodles joined #lisp 2014-09-28T20:29:23Z ehu: well, MOP is like macros: you should not normally need it. 2014-09-28T20:29:24Z resttime: "Using the Meta-Object Protocol to Write Objects" 2014-09-28T20:29:32Z ehu: but when you do, you're really glad it's there. 2014-09-28T20:29:43Z resttime: my previous idea about the slots was kinda close 2014-09-28T20:31:06Z ltbarcly quit (Quit: Computer has gone to sleep.) 2014-09-28T20:31:08Z Kenjin quit (Ping timeout: 260 seconds) 2014-09-28T20:31:20Z |3b|: yeah, MOP is one of those things you want other people to have access to even if you don't use it 2014-09-28T20:31:36Z mearnsh quit (Ping timeout: 260 seconds) 2014-09-28T20:31:56Z |3b|: so you can get the 'magic' library that does all sorts of crazy MOP stuff to make some task much nicer than it would have been 2014-09-28T20:33:46Z mcc: i'm finding it amusing how nearly every source, when it describes "defstruct", just says "don't use this". so defstruct really is just an older version of the thing in there for back compat right? 2014-09-28T20:34:47Z mearnsh joined #lisp 2014-09-28T20:34:55Z pjb: mcc: actually, defstruct has its points. But the main drawback is that if you change a structure, you need to recompile all the code that uses it, and reinitialize all the structure instances. 2014-09-28T20:35:18Z mcc: okay. 2014-09-28T20:35:23Z pjb: mcc: on the contrary, the big advantage of CLOS, is that when you modify a class, instances are updated dynamically automatically. 2014-09-28T20:35:45Z mcc: is either defstruct or defclass actually "packing" the data in the way that, say, C++ would? 2014-09-28T20:35:54Z pjb: Nope. 2014-09-28T20:36:08Z pjb: You could implement such packing by writing a metaclass (therefore using MOP). 2014-09-28T20:36:16Z mcc: that makes sense 2014-09-28T20:36:20Z Grue`: i use defstruct a lot, it's lighter than defclass and it makes all accessors on its own 2014-09-28T20:36:40Z Grue`: and methods still work on structs 2014-09-28T20:36:51Z pjb: Grue`: beware, structure accessors are not generic functions in general. 2014-09-28T20:37:33Z Grue`: well yeah, but they usually contain the structure's name in them, so its not like they make sense for any other structure 2014-09-28T20:37:42Z pjb: defstruct has single inheritance. defclass has multiple inheritance. 2014-09-28T20:38:07Z Grue`: i use defstructs when there's absolutely no inheritance involved (even potentially) 2014-09-28T20:38:21Z pjb: and defstruct has :type list or vector, while defclass needs a metaclass of different implementation. 2014-09-28T20:38:38Z Grue`: though it's sometimes hard to predict, but then refactoring to classes is not htat hard 2014-09-28T20:38:48Z pjb: definitely. 2014-09-28T20:39:17Z Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2014-09-28T20:39:18Z pjb: On the other hand, since we can consider defstruct an optimization, perhaps we should start with defclass and only switch to defstruct when having isolated a bottleneck. 2014-09-28T20:40:43Z Grue`: defstruct can be a one liner while equivalent defclass takes a quarter of the screen 2014-09-28T20:40:50Z pjb: yep. 2014-09-28T20:40:57Z pjb: But you can write a macro to generate the defclass. 2014-09-28T20:41:05Z hiroakip quit (Ping timeout: 272 seconds) 2014-09-28T20:43:02Z ehu: mcc: back when ABCL didn't do as great on CLOS as it does now, I used DEFSTRUCT for structured storage of information while not requiring all of CLOS to be loaded. 2014-09-28T20:43:08Z ehu: it's an optimization for me. 2014-09-28T20:43:17Z ehu: mcc: so not only backward compat 2014-09-28T20:43:39Z hiyosi joined #lisp 2014-09-28T20:44:33Z mcc: is there a quick way to find out if a symbol is a defined variable, a macro, or undefined? 2014-09-28T20:44:45Z pjb: No. 2014-09-28T20:44:58Z pjb: There are slow ways. 2014-09-28T20:45:06Z pjb: (apropos "SYMBOL-NAME") 2014-09-28T20:45:11Z pjb: and others, slower. 2014-09-28T20:45:23Z Bike: boundp, fboundp? 2014-09-28T20:45:41Z pjb: (defvar *unbound-variable* #|duh|#) 2014-09-28T20:46:10Z mcc: i don't think i'm looking for a fast way, mostly if i'm like at the repl 2014-09-28T20:46:17Z mcc: or if there would be some way for a syntax highlighter to know that 2014-09-28T20:46:33Z pjb: There is. You may also see how slime/swank does it. 2014-09-28T20:46:37Z mcc: ok 2014-09-28T20:47:46Z attila_lendvai joined #lisp 2014-09-28T20:48:25Z hiyosi quit (Ping timeout: 260 seconds) 2014-09-28T20:48:35Z gingerdeer joined #lisp 2014-09-28T20:48:55Z gingerdeer quit (Client Quit) 2014-09-28T20:51:13Z ndrei quit (Ping timeout: 260 seconds) 2014-09-28T20:51:48Z nand1 quit (Remote host closed the connection) 2014-09-28T20:51:57Z ggole: Unless you mean programmatically, see slime-describe-symbol 2014-09-28T20:52:07Z nand1 joined #lisp 2014-09-28T20:56:57Z malbertife_ quit (Ping timeout: 246 seconds) 2014-09-28T20:57:19Z sdemarre joined #lisp 2014-09-28T20:59:06Z mrSpec quit (Remote host closed the connection) 2014-09-28T21:06:11Z blakbunnie27 quit (Quit: EliteBNC free bnc service - http://elitebnc.org - be a part of the Elite!) 2014-09-28T21:07:18Z pecg joined #lisp 2014-09-28T21:07:18Z nehaljwani joined #lisp 2014-09-28T21:07:30Z nehaljwani: Hi! How to programatically check if two expressions are aplha-equivalent in scheme? 2014-09-28T21:07:50Z dlowe: nehaljwani: ask in #scheme 2014-09-28T21:08:02Z nehaljwani: Hi! How to programatically check if two expressions are aplha-equivalent in lisp? 2014-09-28T21:08:21Z blakbunnie27 joined #lisp 2014-09-28T21:10:00Z mcc: so looking at CLOS it seems like this is really just the same as how Haskell typeclasses work? 2014-09-28T21:10:03Z nehaljwani: dlowe, ? 2014-09-28T21:10:18Z Bike: mcc: uh, maybe barely. 2014-09-28T21:10:37Z p_l: mcc: they aren't the same, but typeclasses helped me "grok" CLOS 2014-09-28T21:10:47Z mcc: okay. 2014-09-28T21:11:01Z mcc: it does seem sort of surprising to see generic methods doing something that looks a ot like pattern matching. 2014-09-28T21:11:40Z mcc: like, that seems to imply Common LISP has a lot of type information it ordinarily isn't doing anything with. 2014-09-28T21:13:03Z |3b|: CL uses the type information all the time 2014-09-28T21:13:16Z Bike: compile optimization for one 2014-09-28T21:13:17Z |3b|: hard to add 2 values without knowing they are numbers, and how they are represented 2014-09-28T21:13:21Z Bike: and before clos there was typecase 2014-09-28T21:13:31Z Bike: and the hugely complicated typep and subtypep 2014-09-28T21:13:31Z mcc: internally, or is ability to do things with them exposed to the programmer? 2014-09-28T21:13:38Z |3b|: clhs typep 2014-09-28T21:13:38Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_typep.htm 2014-09-28T21:13:39Z Bike: clhs typecase 2014-09-28T21:13:39Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_tpcase.htm 2014-09-28T21:14:02Z |3b|: also lots of specific things like consp, listp, atom, etc 2014-09-28T21:14:14Z mcc: what is typep (note: i am looking at documentation for it and do not understand it) 2014-09-28T21:14:18Z sdemarre quit (Ping timeout: 244 seconds) 2014-09-28T21:14:24Z Bike: (typep object type) => T if object is of type type, NIL otherwise 2014-09-28T21:14:37Z mcc: ok 2014-09-28T21:14:40Z Bike: so, say, (typep (list 1 2 3) '(cons integer null)) 2014-09-28T21:14:42Z mcc: that makes sense 2014-09-28T21:15:11Z mcc: so like, the thing where... it seems like i could use defmethod to define two versions of a method, one of which acts on ints, one of which acts on strings 2014-09-28T21:15:17Z Bike: sure. 2014-09-28T21:15:27Z |3b|: clhs integer 2014-09-28T21:15:27Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/t_intege.htm 2014-09-28T21:15:32Z mcc: is there some way to "locally" switch on type information in this fashion in an efficient way, something like case in ML? 2014-09-28T21:15:43Z Bike: typecase? 2014-09-28T21:15:55Z Bike: CLOS actually uses a class system, which is half integrated with the type system, but has differences, most importantly that subclassing is unambiguous (subtyping is not) 2014-09-28T21:15:55Z |3b|: note that in the docs for INTEGER it says "system class", not just type, which is why you can do that 2014-09-28T21:16:03Z |3b|: CLOS dispatches on classes, not types 2014-09-28T21:16:04Z mcc: oh neat 2014-09-28T21:16:27Z |3b|: so you can't dispatch on the type (integer 1 3), only on the class integer 2014-09-28T21:16:29Z Bike: (typecase (result) (integer (do-integer-things result)) (string (do-string-things result))) 2014-09-28T21:16:31Z mcc: the book seemed to imply all the builtin types are classes. is that not true? 2014-09-28T21:16:40Z Bike: depends on what you mean by a built in type 2014-09-28T21:16:52Z Bike: there are complicated types like (integer 1 3) that are built in and not classes, but integer by itself is a class 2014-09-28T21:16:59Z |3b|: while (typep 2 '(integer 1 3)) => T 2014-09-28T21:17:03Z rtoym joined #lisp 2014-09-28T21:17:09Z mcc: ..ok i'm confused, what does "(integer 1 3)" mean. if i run that in my ecl it says "The function INTEGER is undefined". 2014-09-28T21:17:14Z Bike: It's a type. 2014-09-28T21:17:18Z Bike: integers between 1 and 3. 2014-09-28T21:17:23Z mcc: oh, i see 2014-09-28T21:17:42Z Bike: it's not an expression in itself, you have to use it as a type specifier like |3b| did there. 2014-09-28T21:17:58Z mcc: huh. 2014-09-28T21:18:03Z mcc: and i can't, like, store it in a variable or whatever? 2014-09-28T21:18:12Z Bike: well, you can, it's just a quoted list. 2014-09-28T21:18:19Z Bike: (let ((x '(integer 1 3))) (typep 2 x)) 2014-09-28T21:18:37Z |3b|: you could also name it with DEFTYPE if you wanted 2014-09-28T21:18:47Z Paul_McFreely_ quit (Remote host closed the connection) 2014-09-28T21:19:00Z mcc: oh geez so typep is a macro too :/ 2014-09-28T21:19:06Z Bike: No, it's not. 2014-09-28T21:19:11Z Bike: What makes you think it's a macro? 2014-09-28T21:19:21Z mcc: oh... hm. 2014-09-28T21:19:26Z Bike: (funcall #'typep 2 x) 2014-09-28T21:19:35Z |3b|: see the docs linked earlier, says "Function TYPEP" at the top 2014-09-28T21:19:58Z mcc: well i thought it was a macro because I've been testing if things are defined in the environment by typing them into the repl and seeing if it prints UNBOUND-VARIABLE or not. I guess that's not the correct way to do it. 2014-09-28T21:20:20Z |3b|: functions and variables are different namespaces in CL 2014-09-28T21:20:23Z Bike: What did you type in? 2014-09-28T21:20:34Z |3b|: macros and functions are in the same namespace 2014-09-28T21:21:13Z mcc: I just typed "typep" 2014-09-28T21:21:16Z mcc: |3b|: Oh. Okay. 2014-09-28T21:21:38Z mcc: so um here's a semi-related question. let's say i use defclass or defmethod or defgeneric. what "scope" are the new symbols being defined in? 2014-09-28T21:22:03Z Shinmera quit (Quit: しつれいしなければならないんです。) 2014-09-28T21:22:12Z Bike: global scope, in that you can access them anywhere. and in the class namespace (for defclass anyway) 2014-09-28T21:22:40Z Bike: defgeneric puts a function in the function namespace. defmethod actually doesn't affect names per se, if the gf is defined, it just alters the generic. 2014-09-28T21:22:52Z mcc: OK. Is there some way to define a "local" class, like a class which is scoped to a "let" block or something? 2014-09-28T21:22:56Z mcc: this is a thing i do in java or python sometimes. 2014-09-28T21:23:12Z |3b|: def-whatever don't define symbols 2014-09-28T21:23:22Z Bike: no local classes. 2014-09-28T21:23:29Z Bike: well... no locally named classes. 2014-09-28T21:23:30Z |3b|: symbols are created when the source is READ, then are used to name things 2014-09-28T21:24:14Z mcc: …"no locally named classes" implies there might be something like an unnamed class? 2014-09-28T21:24:38Z Bike: Yeah. 2014-09-28T21:24:45Z Bike: Classes are objects too. Like Smalltalk. 2014-09-28T21:25:00Z Bike: but, you don't usually need to do that. In what situations do you use local classes in Java and Python? 2014-09-28T21:25:09Z Bike: I know in Java you sometimes use it as a workaround for not having anonymous functions. 2014-09-28T21:25:19Z mac_ified joined #lisp 2014-09-28T21:25:34Z mcc: "symbols are created when the source is read" because defmethod and defgeneric are macros that is when macros are executed…? 2014-09-28T21:25:40Z mcc: Right, because there are anonymous classes but not anonymous functions. 2014-09-28T21:25:46Z Bike: No, the source is read before macros do anything 2014-09-28T21:25:49Z mcc: okay. 2014-09-28T21:26:02Z |3b|: mcc: CL is defined in terms of CL objects like lists and symbols, not sequences of characters like a lot of languages 2014-09-28T21:26:03Z Bike: Symbols are interned in the reading stage, which is what's usually called the "parsing" stage elsewhere 2014-09-28T21:26:22Z |3b|: CL defines a process for turning sequences of characters into lisp objects, which is implemented by the READ function 2014-09-28T21:26:37Z mcc: How does it know what symbols to intern? Or is the idea just a "symbol" is any string that appears in the source. 2014-09-28T21:26:47Z |3b|: (and which is the R in REPL, and called implicitly in COMPILE-FILE) 2014-09-28T21:26:56Z Bike: (defclass foo ...) "oh, i should make symbols DEFCLASS and FOO" 2014-09-28T21:27:11Z Bike: not every string, but a lot 2014-09-28T21:27:28Z |3b|: there is an algorithm in the CLHS describing how it parses tokens (in the absence of reader macros handling things differently) 2014-09-28T21:27:30Z Bike: you can try (read-from-string "some source text here") to see what the reader returns 2014-09-28T21:27:43Z mcc: anyway um, i would use local classes / anonymous classes for the same purposes i use anonymous functions. like i have some short-time operation which would be well-served by a helper class. or more often there is some thing with a "protocol" that involves having a class or a function passed in, and i need to craft a special object/function for that one instance. 2014-09-28T21:28:06Z |3b|: so it will get a token like "cons", then by default uppercase it, then it interns it into the package stored in the *PACKAGE* variable, probably producing the symbol CL:CONS 2014-09-28T21:28:11Z Grue`: interestinly enough, early drafts of common lisp had local generic functions (i.e. generic-flet) 2014-09-28T21:28:14Z Bike: How often does that actually involve setting up a data layout rather than just some methods? 2014-09-28T21:28:26Z Grue`: then people realised that would be useless 2014-09-28T21:28:29Z Bike: cos in CL methods/generics aren't tied to any class(es). 2014-09-28T21:28:30Z mcc: which i guess... given the second one is the one i really care about, i guess it's hard to imagine what that would mean in CLOS. maybe it would be something like a class whose constructor is inaccessible to the global namespace. 2014-09-28T21:29:25Z mac_ified quit (Remote host closed the connection) 2014-09-28T21:29:29Z |3b|: usually you define a package (which is more or less a namespace), and just don't export the names of internal things from that package 2014-09-28T21:29:41Z mcc: oh, okay 2014-09-28T21:29:42Z dfox joined #lisp 2014-09-28T21:30:02Z mac_ified joined #lisp 2014-09-28T21:30:24Z PuercoPop left #lisp 2014-09-28T21:30:32Z PuercoPop joined #lisp 2014-09-28T21:30:50Z |3b|: the only really 'global' namespace in CL is the package namespace, other names are symbols, which are usually accessed through packages 2014-09-28T21:30:58Z |3b|: (at least the only one i can think of at the moment) 2014-09-28T21:31:55Z mcc: OK 2014-09-28T21:32:37Z mcc: so about the READ thing, that um leads to something i was wondering. let's say i was intrested in defining a little LISP dialect. like i wanna have an interpreter i write that parses a file and spits out a s-expression tree that can be fed to eval. 2014-09-28T21:32:51Z zacharias joined #lisp 2014-09-28T21:33:06Z Bike: ok. usually "interpreter" means eval, not the parser, though. 2014-09-28T21:33:12Z mcc: (I was going to say "eval or compile-file" but it looks like the latter only takes paths as arguments) 2014-09-28T21:33:22Z mcc: what would be the least silly way to do this? 2014-09-28T21:33:30Z |3b|: for a lisp dialect, probably easiest to just use READ, possibly with some reader macros if you want fancier syntax 2014-09-28T21:33:31Z mcc: like i guess i would just implement my own "read" somehow? 2014-09-28T21:33:49Z |3b|: for something that doesn't look like lisp, you probably want to implement a separate parser 2014-09-28T21:34:10Z mcc: "Reader macros allow you to modify the behaviour of the Lisp reader" well ok yeah that's exactly what i was looking for ^_^; 2014-09-28T21:34:55Z |3b|: CL reader is fairly flexible, but there are a few built-in things that are hard to override, like symbol syntax (foo:bar, foo::bar, or :bar) and number syntax 2014-09-28T21:35:22Z |3b|: so if you want to be able to do something like foo::bar::baz, that will be annoying to do with READ 2014-09-28T21:35:29Z mcc: ok 2014-09-28T21:36:26Z jtza8 quit (Remote host closed the connection) 2014-09-28T21:36:32Z kuzy000_ quit (Ping timeout: 245 seconds) 2014-09-28T21:37:07Z mcc: on a semi-related note to that-- the :s I see all over the CLOS docs. Those don't *mean* anything, right? Like I assume that the :s are there just because there's a convention CLOS prefixes "meta" symbols with :? 2014-09-28T21:37:24Z lifenoodles quit (Ping timeout: 260 seconds) 2014-09-28T21:37:24Z Bike: they indicate keywords, symbols interned in the keyword package. 2014-09-28T21:38:02Z mcc: Okay. I think I can figure it out from there ^_^; 2014-09-28T21:38:08Z Bike: foo:bar means a symbol named BAR in the package named FOO. bar by itself uses the value of *package*, a variable, for the package of the symbol. :bar means keyword:bar, and the keyword package is special (keywords are all constant variables bound to themselves) 2014-09-28T21:39:23Z ggole quit 2014-09-28T21:41:01Z mcc: oh, interesting :O 2014-09-28T21:41:11Z |3b|: keywords are a sort-of-global namespace, which makes them convenient for naming things that only have meaning in context, like function arguments 2014-09-28T21:41:33Z |3b|: (naming them from the caller side that is) 2014-09-28T21:42:21Z lifenoodles joined #lisp 2014-09-28T21:42:44Z mcc: i guess i'm confused why one would say :a and not 'a 2014-09-28T21:42:59Z mcc: is the idea that :a in package x is not equal to :a in package y, whereas 'a is always 'a? 2014-09-28T21:43:11Z Bike: the opposite of that. 2014-09-28T21:43:23Z Bike: foo:a and bar:a are not the same, but :a and :a are 2014-09-28T21:43:29Z |3b|: :a is always :a which is keyword:a, regardless of value of *package* 2014-09-28T21:43:53Z |3b|: 'a depends on the value of *package* when it is read 2014-09-28T21:44:10Z mcc: hm ok 2014-09-28T21:44:19Z mcc: "read" here means when it is evaled? 2014-09-28T21:44:23Z Bike: no, it means when it's read. 2014-09-28T21:44:25Z hiyosi joined #lisp 2014-09-28T21:44:28Z mcc: OK. 2014-09-28T21:44:31Z Bike: which is like parsing, like we said before. 2014-09-28T21:44:45Z Bike: (let ((*package* (find-package "FOO"))) (read-from-string "bar")) gets you the symbol foo:bar, (let ((*package* (find-package "BAZ"))) (read-from-string "bar")) gets you baz:bar, (let ((*package* (find-package "FOO"))) (read-from-string ":bar")) => keyword:bar, *package* is irrelevant 2014-09-28T21:44:47Z inginist quit (Ping timeout: 244 seconds) 2014-09-28T21:45:05Z |3b|: you can name keyword arguments with package-qualified symbols, but then you would tend to need to do stuff like (foo:some-function 'foo:keyword-arg value 'foo:other-keyword-arg another-value) instead of (foo:some-function :keyword-arg value :other-keyword-arg another-value) 2014-09-28T21:45:22Z mcc: OK. (Similar to previous question the *symbol* thing that shows up occasionally, are the * * magic/syntax or are they a by-convention part of that particular symbol name) 2014-09-28T21:45:26Z |3b|: or you would need to remember to import foo:keyword-arg and foo:another-value into your current package 2014-09-28T21:45:33Z mcc: *nods* 2014-09-28T21:45:34Z Bike: ** are convention, they indicate dynamic variables. 2014-09-28T21:45:59Z |3b| would like them to be syntax, but they are just convention 2014-09-28T21:46:26Z mcc: This is all very helpful, thank you all. 2014-09-28T21:46:43Z |3b|: you don't want variables to be dynamic without knowing about it, so the ** convention avoids accidental clashes 2014-09-28T21:48:52Z hiyosi quit (Ping timeout: 240 seconds) 2014-09-28T21:58:58Z |3b|: is there some way to see what ASDF is planning to load and in what order? 2014-09-28T22:01:23Z Bike: um, something to do with asdf/plan:make-plan 2014-09-28T22:02:59Z Bike: or asdf:traverse, which is deprecated but easy to understand, there we go. 2014-09-28T22:03:08Z Bike: (asdf:traverse 'asdf:load-op (asdf:find-system whatever)) 2014-09-28T22:04:22Z |3b|: preferably the steps corresponding to a call to load-systems with multiple arguments 2014-09-28T22:04:30Z |3b|: though it seems to have stopped breaking :/ 2014-09-28T22:05:07Z |3b|: hmm, now it broke with just 1 system, so might work 2014-09-28T22:05:53Z lifenoodles quit (Ping timeout: 240 seconds) 2014-09-28T22:10:54Z lifenoodles joined #lisp 2014-09-28T22:17:05Z attila_lendvai quit (Quit: Leaving.) 2014-09-28T22:17:20Z zygentoma quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2014-09-28T22:18:44Z oleo is now known as Guest11597 2014-09-28T22:19:19Z phax quit (Remote host closed the connection) 2014-09-28T22:20:28Z oleo__ joined #lisp 2014-09-28T22:22:17Z Guest11597 quit (Ping timeout: 260 seconds) 2014-09-28T22:27:21Z stepnem quit (Ping timeout: 260 seconds) 2014-09-28T22:27:35Z nand1 quit (Remote host closed the connection) 2014-09-28T22:27:50Z nand1 joined #lisp 2014-09-28T22:30:36Z Kenjin joined #lisp 2014-09-28T22:31:58Z lifenoodles quit (Quit: ZNC - http://znc.in) 2014-09-28T22:32:57Z edgar-rft joined #lisp 2014-09-28T22:33:12Z aqualung joined #lisp 2014-09-28T22:34:21Z aqualung quit (Quit: Leaving) 2014-09-28T22:35:49Z ehu quit (Ping timeout: 272 seconds) 2014-09-28T22:36:53Z zz_karupa is now known as karupa 2014-09-28T22:45:17Z hiyosi joined #lisp 2014-09-28T22:50:12Z hiyosi quit (Ping timeout: 260 seconds) 2014-09-28T22:58:21Z LiamH joined #lisp 2014-09-28T23:00:31Z vaporatorius quit (Remote host closed the connection) 2014-09-28T23:02:47Z ovidnis joined #lisp 2014-09-28T23:03:22Z heddwch quit (Ping timeout: 240 seconds) 2014-09-28T23:04:37Z innertracks quit (Quit: innertracks) 2014-09-28T23:07:24Z try-catch-throw joined #lisp 2014-09-28T23:15:57Z mishoo quit (Ping timeout: 260 seconds) 2014-09-28T23:16:47Z lifenoodles joined #lisp 2014-09-28T23:18:03Z Jesin quit (Quit: Leaving) 2014-09-28T23:23:35Z hiyosi joined #lisp 2014-09-28T23:24:26Z kcj joined #lisp 2014-09-28T23:29:43Z bege joined #lisp 2014-09-28T23:31:07Z paul0 quit (Ping timeout: 245 seconds) 2014-09-28T23:32:13Z gingerale quit (Ping timeout: 260 seconds) 2014-09-28T23:34:44Z kristof joined #lisp 2014-09-28T23:39:03Z zacts quit (Quit: leaving) 2014-09-28T23:42:12Z zacts joined #lisp 2014-09-28T23:44:15Z zacharias quit (Ping timeout: 246 seconds) 2014-09-28T23:44:41Z meiji11 quit (Remote host closed the connection) 2014-09-28T23:48:34Z freaksken quit (Ping timeout: 272 seconds) 2014-09-28T23:51:33Z kcj quit (Read error: Connection reset by peer) 2014-09-28T23:52:05Z joast quit (Quit: Leaving.) 2014-09-28T23:52:41Z pillton quit (Remote host closed the connection) 2014-09-28T23:53:58Z pillton joined #lisp 2014-09-28T23:57:46Z EvW quit (Ping timeout: 272 seconds) 2014-09-28T23:58:21Z zacharias joined #lisp