00:00 Lajla: I'm not the person that takes insults lightly, mind you. 00:00 jonrafkind: Lajla, did you know theres a #c channel? 00:00 Lajla: Demosthenex, but I get that you are trying to find out which lisp is the best for you? 00:00 Lajla: jonrafkind, yeah 00:00 jonrafkind: try telling them whats up 00:00 Lajla: I got into a fight there too. 00:00 Lajla: They called me too theoretical I think. 00:00 jonrafkind: i asked a question in there once and got insulted with a curse word, in record time 00:01 Lajla: jonrafkind, try telling the people in #racket though that it'snot an industry language. 00:01 Lajla: THey will have your head. 00:02 Lajla: jonrafkind, but you got to love (3 + 6) 00:03 Demosthenex: well, not exactly 00:03 Demosthenex: i want to learn lisp because of my emacs usage 00:03 Demosthenex: but i'm well aware that emacs' lisp is a hack... 00:04 Demosthenex: i read Practical Common Lisp and was impressed, and yes, #lisp says scheme/racket is all "educational" 00:04 Demosthenex: but i'd say CL is stagnant, out date, and completely overrun with patch after hack after patch 00:04 Demosthenex: CL really made the statement "lisp makes hard things easy, and easy things hard" true 00:04 Demosthenex: on the other hand, i was up and running in racket in minutes after compiling it 00:05 Demosthenex: i like lisp, i've been porting my perl tools over 00:05 Demosthenex: because perl just feels wrong now... 00:05 Demosthenex: but having to play the ASDF game jsut to get regexps... and the inability to package software. omg 00:05 jonrafkind: whats asdf 00:06 Demosthenex: CL's packager 00:06 Demosthenex: talk about a black art 00:06 jonrafkind: oh.. good name.. 00:06 Demosthenex: good luck finding a gui lib 00:06 Demosthenex: that works 00:06 Demosthenex: and isn't dated from 1993 00:06 eli: jonrafkind: It's one of a few CL packaging systems, trying to cover up for the mess of not having separate phases. 00:07 jonrafkind: so it does some static analysis to figure out load order, or something? 00:07 Lajla: Demosthenex, you also dit clojure, right? 00:07 jonrafkind: http://sourceforge.net/projects/cl-sdl/ -- yea, this is kind of old 00:07 Lajla: Clojure is obviously the most modern. 00:07 Lajla: I have been told that the compiler is less-than-optimal though 00:08 Demosthenex: uh 00:08 Lajla: It was only made by one dude mainly, after all. 00:08 Demosthenex: i'm sorry, java gives me a rash 00:08 Demosthenex: i did look at newlisp, but it takes shortcuts 00:10 eli: jonrafkind: I don't have experience with it (came around after I was done with CL), but my guess is that there is no analysis, just manual labor. 00:10 eli: (And there cannot be any static analysis, only dynamic one.) 00:10 eli: To get a hint of the nightmare, see http://fare.livejournal.com/146698.html 00:10 Lajla: Demosthenex, well, Rich says 'it's okay to hate Java, but love the JVM' 00:11 Lajla: ओूAt least, that's his stance 00:11 Demosthenex: sorry, i deal with so many poor java apps, i won't use it 00:11 Lajla: I think both are ultimately the product of strict republican structiny of programmers as per their masterplan to make intellectuals dependent on the government which in turn is dependent on News Corp. 00:11 Demosthenex: riiiiiiiight 00:12 Lajla: Hey man, I got proof of this. 00:12 Lajla: If you look at this pic, the shadows are all off, Steele never went to Sun, he got replaced by a plant clone from other space. 00:12 jonrafkind: oh yes, i can fully appreciate how phases make life better 00:14 Demosthenex: Lajla: don't worry, its just a phase. 00:14 Lajla: What wot why? 00:14 Lajla does not fathom this deep obscure reference hereon made. 00:15 jonrafkind: btw eli ryan is working on adding a hook to the macro expander that passes all fully expanded forms to some function immediately after expanding them 00:16 jonrafkind: this allows you to do errortrace like annotations on syntax at higher phases 00:16 jonrafkind: i havent gotten a chance to test it yet, just thought you would be interested in its existence 00:16 Lajla: You're not going to explain it? 00:16 jonrafkind: me? what i just said? 00:17 jonrafkind: or Demosthenex 00:17 eli: jonrafkind: You mean a hook in the form of some dynamic `current-foo'? 00:17 jonrafkind: yea 00:17 eli: And when do you set that hook? 00:17 jonrafkind: im not sure exactly what it is, he said its similar to the stuff he did to make the macro stepper 00:18 jonrafkind: im not sure 00:18 eli: Isn't that kind of the same as using local-expand-*? 00:19 jonrafkind: but if you local-expand stuff you don't get to see macros at higher phases, you just get the phase 0 stuff back, right? 00:19 Lajla: jonrafkind, yeah, the phase thing. 00:20 jonrafkind: (let-syntax ([x (lambda (stx) (phase1-macro ...))]) (x)) ;; would expand `phase1-macro' without letting you observe it 00:20 eli: jonrafkind: But you could use a local expander in `phase1-macro' itself, no? 00:21 jonrafkind: you could, but what if you dont control phase1-macro 00:21 jonrafkind: or you mean (local-expand (phase1-macro ...)) ? 00:21 eli: Then you wrap the expression in your own macro that expands it. 00:21 eli: Yeah, that. 00:21 eli: In any case, I don't see how that would make errortrace better. 00:21 jonrafkind: yea but then you have to insert local-exapnd everywhere 00:22 jonrafkind: errortrace doesnt annotate anything at higher phases than 0 00:22 jonrafkind: so if you have a bug in a macro, you're doomed 00:22 jonrafkind: because the first thing errortrace does is call `expand' on your module 00:23 eli: But ... why would you want that? The higher levels don't really need the same kind of details that you use at the runtime level. 00:23 jonrafkind: well.. says who. if you write reasonablly complex macros (i.e, not just syntax-rules) then you can have the same complexities in higher phases that you have at runtime 00:23 eli: And if you do have such a macro, you write the code and test it as usual, then `require-for-syntax' it into the macro level. 00:24 eli: ^^^ 00:25 jonrafkind: i dunno i suppose 00:25 jonrafkind: i mean in honu land i need to let the macro expander work as usual 00:25 eli: OK. I'll wait patiently. (Tell him that it would be nice to write occasionally about such projects...) 00:25 jonrafkind: i can extract some parts out into regular functions, but i cant test the whole system like that 00:26 jonrafkind: but i suppose thats a good point, ill look into it more 00:27 jonrafkind: oh eli did paul stansifier give a talk or something about macros for infix languages at neu recently? 00:27 eli: There was such a talk recently. 00:27 jonrafkind: and.. what of it 00:27 jonrafkind: you didnt go? 00:27 eli: One talk in the semester that I'd really want to see, and I had a dentist appointment right in the middle. 00:28 jonrafkind: oh, did anyone else I know go? sam/carl/stevie? 00:28 eli: Probably. 00:28 jonrafkind: ok ill bug them 00:28 eli: I kind of made myself believe that I didn't lose much if eventually you'll get something better... 00:30 jonrafkind: well thats faith for you! 00:42 (join) mwolfe 01:36 rapacity: on typed/racket is there a way to make the type of (vector-immutable 1 "a") show as (Vector Integer String) instead of (Vectorof (U String Positive-Fixnum)) 02:04 (quit) mwolfe: Remote host closed the connection 02:11 (quit) hanDerPeder: Quit: hanDerPeder 02:57 eli: rapacity: Looks like a bug, you should report it. 02:59 rapacity: ok will do 03:13 eli: rapacity: Sorry, I should have told you that it is a bug, not a possible bug. 03:13 eli: For example, (ann (vector-immutable 1 "a") : (Vector Integer String)) should work. 03:14 (join) freddie111 03:15 rapacity: ah :p I just sent a bug report 03:16 rapacity: but didn't include that example, I tried that line as well 03:16 eli: Yes, and it could have been more assertive... 03:16 eli: In the sense that there *is* something wrong. 03:16 eli: But the point will be clear anyway, I think. 03:16 rapacity: I'm lacking in self confidence :p 03:22 (quit) jonrafkind: Ping timeout: 250 seconds 03:29 (join) jst 03:30 jst: Hi, everyone! Maybe you guys can help me with this; I can't seem to find the answer in the docs: is there a function in Racket like the range(x) function in Python? 03:36 jst: Nevermind, I think I've found it. 03:53 (quit) jst: Remote host closed the connection 04:23 (join) masm 05:02 Guest74073: hey guys. in the language reference, you have functions like this: (p x y [#mode: mode-flag]) -> any 05:02 Guest74073: how do i use that mode-flag thingie? 05:05 Guest74073: for example, i naively tried just putting (open-output-file "C:\\file.txt" [#mode: 'binary]) 05:05 Guest74073: into my program 05:05 Guest74073: which gives an error 05:06 rapacity: don't put [] around the mode 05:06 rapacity: (open-output-file "C:\\file.txt" #:mode 'binary) 05:07 rapacity: the [] in the docs are for optional arguments 05:10 Guest74073: oh, first when i tried that the compiler errored and said i gave too many arguments. removing the #:mode from the arguments fixed that 05:10 Guest74073: seems that i only needed (open-output-file "C:\\file.txt" 'binary) 05:10 Guest74073: thanks 06:46 (join) Ralak 06:46 (join) MayDaniel 06:51 Ralak: hi i have a simple question, begin evaluates all expretions and gives the last expretion value 06:52 Ralak: is there something that can execute 06:52 Ralak: a sequence of instructions 06:52 Ralak: i can think of cicles 06:52 Ralak: but they do require a end expretion 07:10 (join) mije 07:10 (join) lucian 07:12 mije: geiser is cool. 07:15 (quit) MayDaniel: 07:17 (quit) em: Ping timeout: 240 seconds 07:19 (join) mceier 07:35 (quit) jao: Ping timeout: 245 seconds 07:48 (join) emma 07:52 (quit) freddie111: Quit: ERC Version 5.3 (IRC client for Emacs) 08:06 (join) Gwyth 08:20 (quit) Ralak: Quit: Page closed 08:42 (quit) Gwyth: Ping timeout: 260 seconds 08:45 Guest74073: i got a simple question: how do i convert floating point values into exact integers? 08:46 Guest74073: truncate, floor and ceiling are no good, the remove the decimal places but still leave the value in floating point format, so 15.315 becomes 15.0, instead of the exact integet 15 that i need 09:00 Guest74073: found it: inexact->exact 09:06 (quit) mije: Ping timeout: 265 seconds 09:13 (nick) emma -> em 09:43 (join) mije 09:47 (join) anRch 10:02 (join) MayDaniel 10:04 (join) b-man_ 10:09 (quit) mije: Ping timeout: 265 seconds 10:24 (quit) em: Ping timeout: 255 seconds 10:25 (join) em 10:40 (quit) b-man_: Remote host closed the connection 11:13 (quit) masm: Ping timeout: 250 seconds 11:31 (quit) anRch: Quit: anRch 11:38 (join) mije 11:38 mije: does anybody know if it's possible to send a whole file in the repl for evaluation in geiser ? 11:41 (quit) rapacity: *.net *.split 11:43 (join) rapacity 11:46 (quit) rapacity: *.net *.split 11:47 (join) rapacity 11:54 (join) hanDerPeder 11:54 Lajla: rudybot, eval (inexact->exact1) 11:54 rudybot: Lajla: your sandbox is ready 11:54 rudybot: Lajla: error: reference to undefined identifier: inexact->exact1 11:54 Lajla: rudybot, eval (inexact->exact 1) 11:54 rudybot: Lajla: ; Value: 1 11:54 Lajla: rudybot, eval (exact? 1) 11:54 rudybot: Lajla: ; Value: #t 11:55 Lajla: rudybot, eval (exact? "I worship his shadow") 11:55 rudybot: Lajla: error: exact?: expects argument of type ; given "I worship his shadow" 12:00 Lajla: rudybot, eval (define offby1 3) 12:00 rudybot: Lajla: Done. 12:01 Lajla: rudybot, eval (zero? offby1) 12:01 rudybot: Lajla: ; Value: #f 12:03 (join) masm 12:35 (join) MayDaniel_ 12:38 (quit) MayDaniel: Ping timeout: 265 seconds 13:08 offby1: :-( 13:10 offby1: rudybot: give Lajla offby1 13:10 rudybot: Lajla: offby1 has given you a value, say "rudybot: eval (GRAB)" to get it (case sensitive) 13:10 offby1: Lajla: actually, say ((GRAB)), with two sets of parens 13:10 offby1 whistles innocently 13:15 Lajla: ((GRAB)) 13:15 Lajla: rudybot, eval ((GRAB)) 13:15 rudybot: Lajla: Done. 13:17 Lajla: rudybot, eval (GRAB) 13:17 rudybot: Lajla: ; Value: # 13:17 Lajla: Ahh 13:17 Lajla: offby1, what was that procedure? 13:17 Lajla: I take it that it has a side effect? 13:23 Lajla: rudybot, give offby1 (lambda () (set! + *)) 13:23 rudybot: Lajla: error: eval:1:17: set!: cannot mutate module-required identifier in: + 13:23 Lajla: =( 13:23 Lajla: rudybot, give offby1 (lambda () (set! offby1 *)) 13:23 rudybot: offby1: Lajla has given you a value, say "rudybot: eval (GRAB)" to get it (case sensitive) 13:26 (join) mwolfe 13:28 offby1 glances around nervously. 13:28 offby1: Lajla: no side effects at all! What do I look like, a terrorist?! 13:29 offby1: ((GRAB)) 13:29 offby1: rudybot: eval ((GRAB)) 13:29 rudybot: offby1: Done. 13:29 offby1: rudybot: offby1 13:29 rudybot: offby1: ; Value: "Super-fantastic" 13:29 offby1 scratches head 13:34 (quit) MayDaniel_: Read error: Connection reset by peer 13:58 (quit) Lajla: Ping timeout: 272 seconds 14:01 (join) jonrafkind 14:08 (join) martinhex 14:15 (quit) mije: Ping timeout: 265 seconds 14:18 (join) philo_ 14:19 philo_: hi 14:19 philo_: is there a way to use chikens eggs on racket ? 14:42 offby1: no. 14:42 jonrafkind: you should make something that does that! 14:43 offby1: There's an app for that. 14:48 (join) artbez 14:55 artbez: Hello all. I'm a lone stuned who is stuyding HtDP book and I'm uncertain about correctness of my solutions for some exercizes. Is it a correct place to ask this kind of questions? 14:55 eli: artbez: You can ask questions here -- but for these kind of questions the mailing list is generally better. See http://racket-lang.org/community.html 14:55 eli: (But please don't post solutions -- just ask questions...) 15:20 (quit) em: Ping timeout: 240 seconds 15:24 (join) em 15:38 (join) Lajla 15:51 (quit) artbez: Quit: Page closed 16:00 (join) hallihallo 16:01 hallihallo: how can i require packtes in racket which are in the same folder as the file 16:01 hallihallo: something like (require ./name) or so? 16:02 eli: (require "name.rkt") 16:05 hallihallo: thx 16:05 (quit) hallihallo: Quit: Page closed 16:10 Lajla: rudybot, eval (require "name.rkt") 16:10 rudybot: Lajla: your sandbox is ready 16:10 rudybot: Lajla: error: file-or-directory-modify-seconds: `read' access denied for /usr/local/src/rudybot/name.rkt 16:10 Lajla: Too bad. =( 16:10 Lajla: offby1, why haven't I this access? 16:10 Lajla: Explain yourself, young lady. 16:20 offby1: why _should_ you have that access? 16:20 offby1: .oO("Why does a Jew answer a question with a question?") 16:21 Lajla: offby1, so that I can read your files 16:21 Lajla: Philes 16:21 Lajla: Your paedofiles. 16:21 Lajla: I read them 16:21 Lajla: Like Chris Hansen 16:21 Lajla: Because remember, despite what the liberal media may tell you, being 18 years old and being attracted to a 17 year old is twisted and wrong. 16:29 em: hi guys 16:29 em: How do you get racket to read a text file and do stuff to it? 16:34 offby1: gosh 16:34 offby1: (call-with-input-file "/path/to/the/file" (lambda (ip) (do-stuff-with ip))) 16:34 (quit) lucian: Remote host closed the connection 16:45 (join) MayDaniel 16:49 (quit) philo_: Ping timeout: 265 seconds 16:50 offby1: em: https://gist.github.com/738369 16:50 offby1: a working example 16:51 offby1: invoke it like "racket whatever.rkt /etc/passwd" 17:00 (quit) tv|z: Ping timeout: 276 seconds 17:01 (join) tv|z 17:13 (join) mheld 17:13 mheld: hey y'all 17:15 (join) Caffeine 17:15 (part) Caffeine 17:20 eli: mheld: You should look into the racket web server, it is very extensive, and is under continuous improvements. 17:22 mheld: I'm checking out the docs right now, continue? 17:27 eli: mheld: Yes, that's the tutorial, but see also the main two manuals -- one on servlets and one on the web server. 17:28 eli: Also, it might be better to use http://pre.racket-lang.org/docs/html/ -- since there's a backward incompatible change that was done recently, and will be part of the nect release. 17:28 eli: (These things are very rare with the web server, but the change makes it easier to use any number of backends for genarating contents.) 17:29 eli: One such backend is similar to the language I'm using to make the course pages. 17:30 mheld: ah 17:30 mheld: http://pre.racket-lang.org/docs/html/web-server/index.html and http://pre.racket-lang.org/docs/html/web-server-internal/index.html ? 17:31 (quit) jonrafkind: Ping timeout: 260 seconds 17:31 mattmight: Is there a way to disable the GC in Racket? 17:31 offby1: *gasp* 17:32 offby1: mattmight: wait, don't tell me: you've learned that the Iranian nuclear reactors have switched to Racket, and ... 17:32 mheld: is there an evented server in racket? 17:32 offby1 stares blankly 17:33 mattmight: mheld: One of my grad students looked at adding an evented server. 17:33 mattmight: It's no there right ow. 17:33 mheld: I'm guessing via frtime? 17:33 mattmight: offby1: I need to turn off the GC for benchmarking. It's dominating my benchmarks at the moment. 17:34 offby1: mattmight: you could try forcing a gc before the benchmarked code, and then ... uh ... hoping that your code doesn't cause further gc ... 17:34 offby1 clears throat and gestures towards eli 17:35 mattmight: Tried that. It seems to GC a lot even though it doesn't come close to running out of memory. 17:35 offby1: mattmight: but really, given that most normal code runs with gc enabled, don't you _want_ to know that gc is dominating your benchmarks? 17:35 mheld: (thanks eli) 17:35 offby1: isn't that very fact just the sort of thing you want to find out when you profile? 17:35 mattmight: I really need both numbers: with and without gc. 17:36 eli: mheld: Yes, those pages. 17:36 eli: mattmight: You could allocate some large pieces of memory, then remove all references and run a manual GC. 17:36 eli: mattmight: This is all questionable, since if your benchmarks are dominated by a GC, then it sounds like the numbers should be there... 17:37 eli: mheld: I don't know what that "evented" thing is, but it sounds like the opposite of frtime. 17:37 mattmight: eli: I want to know both numbers: with and without GC. 17:37 eli: mheld: In any case, if you want such things, then racket has a whole bunch of language support from them -- not only as high as frtime, there's CML channels, for example, thread mail queues, synchronizations, etc etc. 17:38 eli: mattmight: The usual `time' gives you the ime spent on GCing too -- so if you subtract that from the runtime you'd get an approximation of the time spent on non-gc work. 17:39 eli: mattmight: In fact, I have a "smart" time replacement that will run the code a few times, then drop some of the extreme highs and lows, then average the rest -- and it displays the subtracted number too, because it's easy to miss cases where the GC is the biggest offender. 17:40 eli: mattmight: (That's part of my interactive hack, which you can get at barzilay.org/hack.html, and the command for that is ",time") 17:40 mattmight: Thanks, eli. I'll have a look at the smart time, too. 17:40 mattmight: My concern is that the gc might be wrecking things like the cache. 17:41 offby1: I think you mean http://barzilay.org/misc/interactive.rkt 17:45 eli: mattmight: It most certainly will not make the cache happy... But disabling it sounds to me like a form of cheating -- unless the conclusion is that there are cases where it's worth it to have a switch to disable GCing... 17:45 eli: offby1: Yeah, I meant barzilay.org/hacks.html which points at that file... 17:46 mheld: eli: instead of having a thread for each connection, you have a single thread manage everything asynchronously 17:46 mattmight: eli: I agree that you've got to run it with GC on, but if too-frequent GCs are costing me, then that's important to know. It suggests routes to optimization. 17:47 eli: mheld: While it's possible to do that (see `sync'), there's a much weaker point to do it when you have green threads. I don't remember the exact cost of a racket thread but it was somewhere on the neighborhood of 10k. 17:47 eli: mattmight: So try the large allocation thing. 17:48 eli: mattmight: Or, in an extreme case, go and tweak the sources -- I think that Matthew wrote about the place to start doing that. 18:31 (quit) ChanServ: shutting down 18:35 mattmight: eli: I tried the large allocation thing. It didn't seem to work. 18:40 (join) b-man_ 18:44 (join) ChanServ 18:44 (quit) ChanServ: *.net *.split 18:48 (join) ChanServ 18:51 (quit) MayDaniel: Read error: Connection reset by peer 18:56 (quit) cinch: Ping timeout: 272 seconds 19:04 (quit) em: Ping timeout: 276 seconds 19:04 (join) em 19:31 (join) philo_ 19:43 (join) jonrafkind 19:52 (quit) b-man_: Remote host closed the connection 19:57 (quit) mceier: Quit: leaving 20:27 eli: mattmight: There might be a difference between a huge vector and a huge list, they might be allocated on different kinds of pages. (I don't remember more details about the GC...) 20:40 (join) lucian 20:40 Demosthenex: eli: thanks again. having a basic example i can read, combined with that tr365 paper, syntax is starting to make more sense 20:47 eli: Demosthenex: No problems. 20:58 Demosthenex: eli: you know what would have really helped 20:58 Demosthenex: is a tutorial where they broke out the syntax function instead of using #' as a shortcut immediately 20:58 Demosthenex: #' != obvious 21:00 jonrafkind: whats even less obvious is when you see things like #'#'foo 21:02 (quit) masm: Quit: Leaving. 21:04 (join) Gwyth 21:05 eli: Demosthenex: Yes, a tutorial would be nice, but those things are hard to write. 21:05 eli: As for #' -- it's probably clearer for semi-newbies, who can draw the analogy to ' -- it's unfortunate that CLers get confused because there #' is so different. 21:07 (quit) philo_: Ping timeout: 265 seconds 21:11 Demosthenex: perhaps 21:11 Demosthenex: man, i'm close to creating a snippet of code from a list in syntax, and haven't figured out where the extra quoting is coming from ;] 21:59 (quit) parcs: Ping timeout: 245 seconds 22:00 (join) parcs 22:09 Demosthenex: http://pastebin.com/AgiYNXVz 22:09 Demosthenex: right, why in the world is each list elemeting being quoted? 22:18 (quit) parcs: Ping timeout: 240 seconds 22:20 (join) parcs 22:21 (quit) parcs: Remote host closed the connection 22:22 (join) parcs 22:42 eli: Demosthenex: ping 22:44 (quit) parcs: Read error: Operation timed out 22:47 Demosthenex: eli: sir 22:47 eli: Demosthenex: You have a bunch of issues there. 22:47 eli: First, your indentation is, well, pretty bad... 22:47 eli: I had to reindent everything to be able to read it. 22:48 eli: Second, don't use (syntax-e #'fields) and expect it to be a list. 22:48 eli: The thing is that these syntax-objects can wrap the tail of the list too. 22:48 Demosthenex: eli: i'm learning. and yeah, the paste was terribel on spacing 22:48 eli: So you could have a syntax object that has as its `syntax-e' a value of (cons 123 #) 22:49 eli: This makes it look like even pulling out a list would be difficult, 22:49 eli: but there's a `syntax->list' function that does just that. 22:49 eli: And incidentally, it returns #f if the syntax cannot be made into a list. 22:50 eli: This is important in your code, since you don't check that `fields' is a list. 22:50 Lajla: Demosthenex, so you've chosen scheme and forfeit CL? 22:50 Lajla: Good, we like that. 22:50 Lajla: We have the power to save the ones you love you know. 22:50 eli: Demosthenex: To continue, you have two syntax results from your macro. 22:50 (join) parcs 22:50 eli: This is probably not what you want. 22:51 eli: Instead, you should always return a single expression, 22:51 eli: for example #'(begin (define this ...) (define that ...)) 22:52 eli: BTW, to check that the fields is a list, you can use a pattern of: (_ name (field ...)) 22:52 eli: And then you can use (syntax->list #'(field ...)) to get a guaranteed list. 22:52 Demosthenex: Lajla: *laugh* 22:53 Demosthenex: ok! 22:53 Demosthenex: cool 22:53 eli: Demosthenex: In any case, your worst problem (which is how you get that error), is a confusion that would be the same with a CL defmacro. 22:54 eli: You construct `mylist' as a list of strings, 22:54 eli: and then you use that in the output. 22:54 Lajla: Demosthenex, aha, you've fallen for my trap. 22:54 Lajla: You watched the praequels. 22:54 Lajla: Not cool kid, not cool. 22:54 eli: So your *output* expression looks like: (lambda () (displayln (apply string-append ("aa" "ba" "ca")))) 22:54 eli: You could just use 'mylist in the output, which would make it: 22:55 eli: (lambda () (displayln (apply string-append '("aa" "ba" "ca")))) 22:55 eli: But at this point I think that your best way to proceed is to switch to drracket, and use the macro stepper. 22:55 eli: ...and now I have to go. 22:57 Demosthenex: i appreciate the insight! 23:00 (quit) lucian: Remote host closed the connection 23:06 (join) asumu 23:28 Demosthenex: here's a question, is there really any difference between () and [] other than for legibility? in cond and let statements they're nice... just wondering if i have to handle them in syntax 23:32 offby1: no difference, as far as I know. 23:34 jonrafkind: it is possible to tell the difference between () and [] in a macro though, you can get a syntax property to determine if it was a (, [, or { 23:36 Lajla: jonrafkind, really? 23:36 jonrafkind: yea 23:36 Lajla: So the reader destinghuishes. 23:36 Lajla: Meh 23:36 Lajla: I think that'sa bad idea. 23:37 Lajla: jonrafkind, go change this. 23:37 Lajla: Now. 23:37 Lajla: Else my wrath shall be upon thee. 23:37 Lajla: The fire from the havens shall rain upon thy land, thy brethren shall be consumed by the ire of the skies. 23:37 jonrafkind: im waiting for the addition of constructors and destructors to `define-struct' 23:38 Lajla: Well, I'm waiting until being republican becomes illegal. 23:38 Lajla: It's a long wait. 23:38 Lajla: They can vote and all, so it's a vicious circle. 23:45 (quit) mheld: Quit: mheld