00:08:08 -!- HG`` [~HG@p5DC055D0.dip.t-dialin.net] has quit [Quit: Leaving.] 00:09:51 ckrailo [~ckrailo@pool-173-57-102-171.dllstx.fios.verizon.net] has joined #scheme 00:23:18 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Quit: Bye] 00:23:48 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 00:26:57 -!- Dre [~Dre@166.pool85-54-128.dynamic.orange.es] has quit [Quit: Leaving] 00:28:24 -!- DT`` [~Feeock@net-93-149-43-212.cust.dsl.teletu.it] has quit [Ping timeout: 255 seconds] 00:30:49 -!- Nisstyre [~nisstyre@109.74.204.224] has quit [Ping timeout: 246 seconds] 00:32:09 -!- Intensity [CBXm5yCGyZ@unaffiliated/intensity] has quit [Remote host closed the connection] 00:32:11 DT`` [~Feeock@net-93-149-43-212.cust.dsl.teletu.it] has joined #scheme 00:32:32 -!- kniu [~kniu@pool-96-250-3-60.nycmny.fios.verizon.net] has quit [Remote host closed the connection] 00:37:51 -!- DT`` [~Feeock@net-93-149-43-212.cust.dsl.teletu.it] has quit [Ping timeout: 255 seconds] 00:49:06 -!- seamus-android [~alistair@cpc1-brig7-0-0-cust565.3-3.cable.virginmedia.com] has quit [Ping timeout: 255 seconds] 00:49:29 DT`` [~Feeock@net-93-149-43-212.cust.dsl.teletu.it] has joined #scheme 00:50:15 Intensity [w3LtOPzWFS@unaffiliated/intensity] has joined #scheme 00:54:48 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Quit: Bye] 00:55:14 -!- somnium [~user@adsl-98-65-181-157.dab.bellsouth.net] has quit [Remote host closed the connection] 00:55:48 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 01:02:33 jonrafkind [~jon@jonr5.dsl.xmission.com] has joined #scheme 01:08:06 Nisstyre [~nisstyre@109.74.204.224] has joined #scheme 01:08:09 -!- Nisstyre [~nisstyre@109.74.204.224] has quit [Max SendQ exceeded] 01:15:12 rramsden [~rramsden@173.180.109.6] has joined #scheme 01:18:20 this course is so strange 01:18:35 we touch soo many subjects during the lectures 01:18:47 then comes the exam, and it's like "whoops" with 90% of the subjects 01:19:20 we're looking at how to implement trees. How to huffman code. But all the extensive stuff is irrelevant material for the exam 01:19:57 we touch at so many subjects regarding discrete mathmatics and boundness of variables, but best not talk about it 01:22:06 don't look at it as losing a function namespace. look at it as cutting the number of symbol tables in half! 01:22:31 (and a few redundant functions while you're at it) 01:23:15 -!- tessier [~treed@mail.copilotco.com] has quit [Changing host] 01:23:15 tessier [~treed@kernel-panic/copilotco] has joined #scheme 01:25:03 I'm reluctant to look over the lecture notes 01:25:12 they're more confusing than anything now that I know how to do what I have to do 01:25:58 they're just overly complex examples that are easy to follow when the teacher pouts on for an hour about it, but you'll forget about it when you step out, and it's not like you'll have any use for it 01:26:02 university is strange. 01:27:14 -!- zmv [~daniel@c9533906.virtua.com.br] has quit [Quit: sleep] 01:27:49 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 01:34:53 Articate: Hahahaha. I always tell people, if they want to code, they should just code. 01:35:20 Articate: I did the bare minimum of courses to be able to call CS one of my majors; my main major was statistics, where I had more fun. ;-) 01:35:22 yeah - university sure has nothing to do with that 01:35:48 university gives you some papers that allow you to actually learn something 01:36:59 Articate: http://careers.stackoverflow.com/cky (look at the Education section---I tagged 5 things, of which 4 were not officially in the curriculum ;-)) 01:40:07 r, eh? 01:40:42 I mean - I had python last year. I coded so much on the side it was quite ridiculous 01:41:03 I surpassed the teachers in most ways to be skillful with python 01:41:09 Yes---R is one of the "official" languages taught at the stats department, since the language was invented by two lecturers in said department. :-) 01:41:10 yet I got a C 01:41:26 that's when I figured the difference of being a good programmer and a good student 01:41:52 Personally, I didn't worry about grades too much. As long as I passed everything, I couldn't care less. :-) 01:41:57 students rarely need to wear pagers 01:42:29 yeah, personally I don't care, either. But when I'm doing a course, I might as well do well in that course 01:42:42 although, I would probably be better suited for 'real life' if I didn't 01:43:08 I did the same thing with the python exam as I am doing with this. Hanging out at #, asking all small things 01:43:08 Articate: By the time of the third or fourth year at university, I decided I wanted out anyway. I just wanted to do "real" programming, so, I put all my energy into coding late and night and not staying awake at lectures. ;-) 01:43:23 I don't ever attend lectures 01:43:28 god, they're so slow. 01:43:59 *late at night 01:44:04 Nisstyre [~nisstyre@109.74.204.224] has joined #scheme 01:44:06 I get the feeling that most universities are examples of "market failure" -- i.e., they're not really giving the customers (i.e., us) what we want, but for some reason, they don't go out of business 01:44:07 But yeah, I totally understand that. 01:44:16 I don't need an hour of explaining what quick sort is 01:44:21 I need the wikipedia entry 01:44:26 *nod 01:44:27 (those gifs are awesome) 01:44:30 and enough background to understand it 01:45:01 Articate: well said. I taught myself to program; I still had to go back to school because so many employers demanded a degree. 01:45:02 Wiki is pretty layman :D 01:45:49 penryu: I taught myself to program, but have managed to avoid returning to school, despite some employers' preference for a degree. 01:45:51 I mean, House MD + wikipedia = A LOT of medical understanding 01:45:59 (Plus I'm so f***ing old that it'd be silly for me to get a degree now) 01:46:03 haha 01:46:12 old is relative. 01:46:22 sure 01:46:23 Degrees are overrated, in my opinion. 01:46:26 I'm younger than the Earth. 01:46:27 the way I see it, the rest of the world tend to give rather much more pay to someone with a masters than a bachelor 01:46:44 If I were in charge of hiring, the presence or otherwise of a degree won't factor much. 01:46:45 which would be the only reason why I'd ever get a master 01:47:36 The thing is, I only want to offer jobs to people I want to work with, and whether someone has a Master doesn't really factor into whether I'd work well with them, so. 01:47:37 then again. Simple math would say that if I worked those two years with the lower pay, it'd take some time to make the money back 01:48:43 I think I do well in that department. I was almost hired by a game company at 18 because of that, it seemed. I sent them a letter on a whim and they were like "hey. you're awesome." - I think I didn't get it because I didn't know how to do a job interview 01:48:50 but yeah. I'm older than the eponymous language of this channel, and it's kind of strange being back in uni. 01:48:59 wait. no. I'm not. 01:49:03 and I don't mean that I didn't come off in the right way, I just was too honest on the "where do you see yourself in 5 years?" 01:49:05 I'm just slightly younger. 01:49:15 I was all "I've got so many things I want to do! I might be a musician!" 01:49:54 now I know the answer is "((don't say 'banging your wife')) - working here!" 01:50:17 yeah, I was offered a position by an RoR shop, even though I've never touched Rails. just because the CTO got along well with me. 01:50:40 (I have done a fair bit of Ruby, but it all predated Rails) 01:50:51 well, guys - it's 3:50am. Some sleep might help my sinus infection so I'm all ready for tomorrow 01:51:06 one last exercise in streams, and it's bed time 01:51:31 penryu: In most cases, programmers that do well in one language can do about as well in any other language in the same general category. 01:52:04 Obfuscate: true ime as well. which is also why i'm venturing outside my comfort zone with some functional stuff. :) 01:52:15 I taught myself how to program (Lua, though) in half a week 01:52:22 ha ha lua 01:52:28 *ahem* sorry. 01:52:39 it was for that game company position :) 01:52:43 my favorite windowmanager is scripted in lua. 01:52:46 I just grabbed the first scripting language I found 01:52:48 but I like it anyway. 01:52:57 I had a week to do this whole thing, so I had to learn SOMETHING 01:53:10 I learned enough of lua to script awesomewm as well, but I cry a little every time I do it. 01:53:17 haha 01:53:23 looking back at it, I can certainly see why 01:53:24 Obfuscate: precisely 01:53:45 an interactive window is gold when learning stuff, though 01:54:04 input something, something happns - awesome! 01:54:19 yeah. I probably could have picked up perl is half the time it took me if I'd had a real REPL 01:54:43 I don't learn any more quickly that way, but I know a lot of people do. 01:55:08 well, perl specifically because it _is_ interpreted, and because context is such a bitch in perl. 01:55:09 Articate: "Where do you see yourself in 5 years" is an example of what I call a "bullshit question". I would _never_ ask that sort of question when I interview a programming candidate, because I can tell from how they approach a programming problem how passionate they are about programming. 01:55:14 stuff like C, you don't really have a choice. 01:55:59 penryu: Perl had a sort-of REPL if you did "perl -de0". Which is how I did lots of exploratory Perl stuff. 01:56:32 cky: I always assumed that was sort of an irrationality detector, where 80% of all possible answers are fine, but something in the remaining 20% might indicate they're not really in sync with, say, your company. 01:56:49 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote host closed the connection] 01:56:53 cky: oh yeah. -de1 was helpful; but crap for lexical stuff 01:57:21 Re irrationality detector; most interviewees have already been coached about how to answer that sort of question. 01:57:34 So really, it's one of those "you didn't really want to hear the honest answer"-type questions. 01:57:44 cky: ok, so yeah. at that level, it's back to being bullshit. 01:57:46 I make a point to ask only questions that I wanted honest answers to. 01:59:30 I usually respond to ridiculous questions with a question. 01:59:48 the primary problem with perl -de1 was that the only thing that carried over between prompts are global symbols. 02:00:18 I might ask it in jest and see if candidates have the chutzpah to answer "I want to be famous enough to bang Drew Barrymore" (sorry, just picked a name out of thin air---I'm sure there are probably more fitting celebrities for the younger generation). :-) 02:00:47 Freudian slip! 02:00:51 or for the older generation 02:00:56 penryu: That. 02:01:29 Sela Ward, eg. 02:02:16 ffs, last week the prof asked if anyone in class had seen "The Dead Poets Society"; of course, I'm the only punter to raise my hand. 02:03:06 Awwww.... 02:03:48 02:06:44 cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined #scheme 02:07:46 ok. movie time with the fam. g'night all. 02:07:54 Have fun! 02:09:48 postponed. time to get quack to a usable form. 02:10:32 -!- leppie [~lolcow@196-210-170-119.dynamic.isadsl.co.za] has quit [Read error: Connection reset by peer] 02:11:07 leppie [~lolcow@196-210-170-119.dynamic.isadsl.co.za] has joined #scheme 02:11:48 -!- yosafbridge [~yosafbrid@li125-242.members.linode.com] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 02:12:08 yosafbridge [~yosafbrid@li125-242.members.linode.com] has joined #scheme 02:14:25 -!- tauntaun [~Crumpet@ool-44c711b3.dyn.optonline.net] has quit [Quit: Ex-Chat] 02:15:07 penryu: you should have stood up on your desk 02:15:22 foof: ... that was the exact scene the prof was referencing. 02:15:42 hah 02:26:28 g'night, people! 02:26:50 g'night Articate 02:26:53 wish me luck! 02:27:10 good luck! 02:27:24 Articate: Good luck! 02:27:28 Articate: Have a great exam! 02:36:31 tdignan [~tom@pdpc/supporter/student/tdignan] has joined #scheme 02:42:15 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 02:42:36 -!- em [~em@unaffiliated/emma] has quit [Ping timeout: 250 seconds] 02:54:39 RenardP [~chatzilla@modemcable151.135-160-184.mc.videotron.ca] has joined #scheme 02:56:54 Hello, what is the Scheme expression for a not equal b ? I've tried with (!= a b) .... and of course it didn't work 02:57:28 rudybot: eval (not (= 3 2)) 02:57:29 offby1: ; Value: #t 02:57:31 rudybot: eval (not (= 3 3)) 02:57:31 offby1: ; Value: #f 02:57:33 :) 02:57:52 thanks :) 02:58:29 rudybot: (define (!= . stuff) (not (apply = stuff))) 02:58:30 offby1: Done. 02:58:33 rudybot: (!= 2 3) 02:58:33 offby1: ; Value: #t 02:58:35 rudybot: (!= 2 2) 02:58:36 offby1: ; Value: #f 02:58:38 \o/ 02:58:40 /~\ 02:58:45 yep 02:58:59 it does not give the correct answer 02:59:03 really? 02:59:06 for (not (= a b)) 02:59:09 time for some test cases! 02:59:17 demonstrate via rudybot 03:01:06 RenardP: if you demonstrate the wrong answer I'll see if I can fix it 03:01:40 rudybot: (begin (define a 2) (define b 2) (not (= a b))) 03:01:41 RenardP: your sandbox is ready 03:01:41 RenardP: ; Value: #f 03:01:51 looks right to me 03:02:05 yep you mean 2 is not equal 2 ? 03:02:15 *offby1* stares blankly 03:02:35 it returned #f, but your question suggests that you think it returned #t 03:02:55 rudybot: (define a 2) 03:02:56 offby1: Done. 03:02:58 rudybot: (define b 2) 03:02:58 offby1: Done. 03:03:02 rudybot: (= a b) 03:03:02 offby1: ; Value: #t 03:03:05 rudybot: (not (= a b)) 03:03:05 offby1: ; Value: #f 03:03:11 rudybot: (!= a b) 03:03:11 offby1: ; Value: #f 03:03:17 do any of those seem wrong to you? 03:04:09 probably I've understand your first post wrong 03:04:20 dnolen [~davidnole@184.152.69.75] has joined #scheme 03:04:29 I was under the impression that you think that (not (= a b)) 03:04:36 can test for a not equal b 03:04:41 em [~em@unaffiliated/emma] has joined #scheme 03:04:58 Gambit Scheme does not have the != operator 03:06:18 -!- rramsden [~rramsden@173.180.109.6] has quit [Ping timeout: 260 seconds] 03:06:20 I'm still confused. 03:06:29 I _do_ claim that (not (= a b)) is the same as (!= a b) 03:06:32 kniu [~kniu@pool-96-250-3-60.nycmny.fios.verizon.net] has joined #scheme 03:07:10 apparently it is eq? 03:07:16 but maybe I'm wrong 03:07:22 I don't understand you. 03:07:22 I'm pretty new to Scheme 03:07:41 say that you have a=2 and b=2 03:07:48 which we indeed have 03:07:52 rudybot: (values a ) 03:07:52 offby1: ; Value: 2 03:07:54 rudybot: (values a b) 03:07:54 offby1: ; Value: 2 03:07:55 offby1: ; Value#2: 2 03:07:57 can you claim that a is different from b ? 03:08:01 I think so 03:08:10 not in any interesting or useful sense, no. 03:08:28 perhaps you're conflating storage locations with values. 03:08:30 rudybot: (not (= a b)) 03:08:31 RenardP: ; Value: #f 03:09:46 :) you are absolutely right 03:09:58 I really need to take some time to sleep 03:10:00 :)) 03:10:18 sleep is good 03:10:54 yep, especially when you try to implement a rudimentary Scheme interpreter in ... C++ 03:13:20 offby1: I think this will do .... (define != (lambda (a b) (not (= a b)))) 03:13:35 offby1: thanks for your help 03:13:51 I like mine better -- it works with any number of arguments 03:13:56 rudybot: (!= 2 2 2 2 2 2) 03:13:56 offby1: ; Value: #f 03:13:59 -!- MrFahrenheit [~RageOfTho@users-146-61.vinet.ba] has quit [Read error: Connection reset by peer] 03:13:59 rudybot: (!= 2 2 2 2 2 2 999) 03:14:00 offby1: ; Value: #t 03:14:04 MrFahrenheit [~RageOfTho@users-146-61.vinet.ba] has joined #scheme 03:15:10 offby1: yours is more general 03:16:32 ayup 03:16:47 generality is good, especially if it's easy to get 03:18:22 rudybot: (define != (compose not =)) 03:18:23 cky: your sandbox is ready 03:18:23 cky: Done. 03:18:28 rudybot: (!= 2 2 2 2 2 999) 03:18:28 cky: ; Value: #t 03:18:33 rudybot: (!= 2 2 2 2 2) 03:18:33 cky: ; Value: #f 03:18:40 \o/ 03:20:30 -!- MrFahrenheit [~RageOfTho@users-146-61.vinet.ba] has quit [Ping timeout: 258 seconds] 03:20:57 cky: showoff 03:21:43 rudybot: (define isthree (curry = 3)) 03:21:43 offby1: Done. 03:21:47 rudybot: (isthree 3) 03:21:48 offby1: ; Value: #t 03:21:50 rudybot: (isthree 30) 03:21:51 offby1: ; Value: #f 03:29:49 offby1: ;-) 03:31:15 rudybot: ((curry = 3) 3 3 3 3 3) 03:31:15 cky: ; Value: #t 03:31:20 Fancy. 03:31:26 rudybot: (require srfi/26) 03:31:26 cky: Done. 03:31:34 rudybot: (define isthree (cut = 3 <...>)) 03:31:35 cky: Done. 03:31:44 rudybot: (isthree 3 3 3 3 3 3) 03:31:44 cky: ; Value: #t 03:31:48 rudybot: (isthree 3 3 3 3 3 30) 03:31:48 cky: ; Value: #f 03:32:17 (I presume that (curry ...) is the same as (cut ... <...>), right?) 03:35:49 rudybot: (define sub3 (cut - <> 3 <...>)) 03:35:50 cky: Done. 03:35:55 rudybot: (sub3 42) 03:35:56 cky: ; Value: 39 03:36:01 rudybot: (sub3 42 1 2 3 4) 03:36:01 cky: ; Value: 29 03:37:38 cky, curry is not exactly the same, no 03:37:56 rudybot: (((curry equal?) 1) 2) 03:37:57 carleastlund: your sandbox is ready 03:37:57 carleastlund: ; Value: #f 03:38:07 Hmmm. 03:38:13 rudybot: ((curry equal?) 1 2) 03:38:13 carleastlund: ; Value: #f 03:38:19 rudybot: (((curry =) 1) 1) 03:38:19 cky: ; Value: #t 03:38:24 rudybot: ((((curry =) 1) 1) 1) 03:38:24 cky: error: procedure application: expected procedure, given: #t; arguments were: 1 03:38:31 It does some dynamic arity-arithmetic to see when an application is "done" 03:38:40 rudybot: ((curry map) +) 03:38:41 carleastlund: ; Value: # 03:38:53 rudybot: ((((curry (lambda (a b c) (+ a b c))) 1) 1) 1) 03:38:54 cky: ; Value: 3 03:39:13 rudybot: ((((curry (lambda (a b c . rest) (apply + a b c rest))) 1) 1) 1) 03:39:14 cky: ; Value: 3 03:39:18 rudybot: (((((curry (lambda (a b c . rest) (apply + a b c rest))) 1) 1) 1) 10) 03:39:19 cky: error: procedure application: expected procedure, given: 3; arguments were: 10 03:39:28 Ah, so it doesn't handle the rest arguments. 03:39:43 rudybot: ((curry values) 1) 03:39:43 cky: ; Value: # 03:39:45 I don't use cut any more, now that I discovered curry. 03:39:50 rudybot: ((curry list) 1 2 3 4) 03:39:51 carleastlund: ; Value: # 03:39:57 rudybot: (((curry values) 1) 2) 03:39:57 cky: ; Value: 1 03:39:58 cky: ; Value#2: 2 03:40:06 rudybot: ((((curry values) 1) 2) 3) 03:40:06 cky: error: context expected 1 value, received 2 values: 1 2 03:40:10 rudybot: (((curry list) 1 2 3 4) 5 6 7 8) 03:40:10 carleastlund: ; Value: (1 2 3 4 5 6 7 8) 03:40:25 Hmmmm.... 03:40:35 rudybot: ((((curry list) 1) 2) 3) 03:40:35 cky: error: procedure application: expected procedure, given: '(1 2); arguments were: 3 03:40:39 Basically, as soon as it has "enough" values to apply, it does, but if it has more and the function takes rest arguments, it will use them. 03:40:57 Right, but only up to two levels, I guess? 03:41:15 The first application never counts as "done". 03:41:37 Even on fixed-arity functions? 03:41:39 The issue with values and list is that they are done at 0 arguments. 03:41:44 Yeah. 03:41:54 rudybot: ((curry expt) 4 4) 03:41:54 cky: ; Value: 256 03:42:19 rudybot: (curry curry 'mmm-delicious curry) 03:42:20 offby1: ; Value: # 03:42:22 It's... an odd function. I've had conversations with Eli about it (he wrote it). We concluded it's not really exactly what one wants, but it has stayed in for compatibility with any program already using it. 03:42:31 rudybot: ((curry curry 'mmm-delicious curry) 'rice 'sandwich) 03:42:32 offby1: error: curry: expected argument of type ; given 'mmm-delicious 03:42:43 carleastlund: *nods* I can agree about the odd part. :-) 03:42:52 I wrote the following, and recommend it over curry: http://docs.racket-lang.org/search/index.html?q=curryn 03:43:09 It should really get moved out of unstable at some point. 03:43:49 There's also special cases "call" and "papply" (for "partially apply"), which are curryn at n=0 and n=1. 03:44:34 Right, so it just curries at fixed arities. 03:44:42 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: night] 03:44:44 No, at fixed numbers of applications. 03:44:49 Oh, nice. 03:45:06 It doesn't care about arity at all. :) 03:45:11 ((((curryn 3 list) 1 2 3) 4 5 6) 7 8 9) 03:45:14 rudybot: ((((curryn 3 list) 1 2 3) 4 5 6) 7 8 9) 03:45:14 cky: error: reference to an identifier before its definition: curryn in module: 'program 03:45:23 rudybot: (require unstable/function) 03:45:23 carleastlund: Done. 03:45:27 rudybot: (require unstable/function) 03:45:27 cky: Done. 03:45:29 rudybot: ((((curryn 3 list) 1 2 3) 4 5 6) 7 8 9) 03:45:29 cky: ; Value: (1 2 3 4 5 6 7 8 9) 03:45:37 There ya go. :) 03:45:41 Fantastic. 03:45:52 It even does keyword arguments, if you have a base function that accepts them. 03:46:02 Hardcore. 03:46:25 ((papply list 1 2 3) 4 5 6) 03:46:31 duh 03:46:37 rudybot: ((papply list 1 2 3) 4 5 6) 03:46:38 carleastlund: ; Value: (1 2 3 4 5 6) 03:46:56 rudybot: (map call (list + - *) (list 1 2 3) (list 4 5 6)) 03:46:56 carleastlund: ; Value: (5 -3 18) 03:47:34 Fancy pants. I guess call is like CL's funcall. 03:47:36 Ish. 03:48:09 Yeah. It's "apply" without the list. It's rarely useful, but every once in a while it helps in a map or for-each if you have, say, a list of thunks. 03:48:20 *nods* 03:48:32 Pretty neat. :-) 03:50:15 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has left #scheme 03:50:34 At one point I just implemented curryn, and applied it to itself to write papply and call. :) I doubt that was terribly efficient, so I rewrote them directly, but it was cute. 03:51:36 That would have been a cool way to fine-tune the JIT compiler. :-) 03:51:42 haha 03:52:45 Seriously, if the JIT compiler could be tuned to compile the curryn-on-curryn versions just as efficiently as the hand-written versions, you know you've got a winner. 03:52:47 -!- RenardP [~chatzilla@modemcable151.135-160-184.mc.videotron.ca] has quit [Quit: ChatZilla 0.9.87 [Firefox 4.0.1/20110413222027]] 03:53:19 I think there's just no way, currently. The keyword argument stuff would probably throw it completely off. 03:53:28 Hmmm. 03:53:57 Now, I could make it more intelligent, so if the base function doesn't accept keywords, curryn uses a positional-argument-only version. 03:54:12 -!- dnolen [~davidnole@184.152.69.75] has quit [Quit: dnolen] 03:54:23 Is it easy to determine if a function accepts keywords? 03:54:54 Yes, just ask the type inferencer what its type is when you compile the code. Er... 03:55:05 You can query a function's arity and keyword-arity, yes. It's a conservative approximation -- it may tell you it accepts things that actually cause an error, but anything it leaves out, the function definitely rejects. 03:55:13 vu3rdd [~vu3rdd@nat/cisco/x-njywuhcpajzktxvm] has joined #scheme 03:55:17 -!- vu3rdd [~vu3rdd@nat/cisco/x-njywuhcpajzktxvm] has quit [Changing host] 03:55:17 vu3rdd [~vu3rdd@fsf/member/vu3rdd] has joined #scheme 03:55:36 Nothing to do with types. The arity of a lambda is stored with its closure. 03:57:08 *nods* 03:57:28 carleastlund: so d'ya learn anything about that compilation error? 03:57:30 -!- Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has quit [Ping timeout: 248 seconds] 03:57:35 rudybot: (procedure-arity current-output-port) 03:57:36 carleastlund: ; Value: (0 1) 03:57:52 offby1, Haven't looked at it yet, no. 03:57:57 rudybot: (procedure-arity values) 03:57:58 cky: ; Value: #(struct:arity-at-least 0) 03:58:02 Riastradh: Are you daring me to write a type inferencer that understands keyword args? :) 03:58:18 foof: he's _double_ daring you. 03:58:29 rudybot: (begin (procedure-arity sort) (procedure-keywords sort)) 03:58:30 carleastlund: ; Value: () 03:58:31 carleastlund: ; Value#2: (#:cache-keys? #:key) 03:58:56 rudybot: (procedure-arity sort) 03:58:57 carleastlund: ; Value: 2 03:59:24 Guess it doesn't handle begin the way I expected. :) 03:59:26 rudybot: (procedure-arity (case-lambda ((x) x) ((x y) y))) 03:59:26 cky: ; Value: (1 2) 03:59:36 rudybot: (procedure-arity (case-lambda ((x) x) ((a b c x y) y))) 03:59:36 cky: ; Value: (1 5) 03:59:43 rudybot: (procedure-arity (case-lambda ((x) x) ((a b c x . y) y))) 03:59:43 cky: ; Value: (1 #(struct:arity-at-least 4)) 03:59:56 rudybot: (procedure-arity (case-lambda (x x) ((a b c x . y) y))) 03:59:57 cky: ; Value: #(struct:arity-at-least 0) 04:00:08 Nice, how it compresses those two cases. 04:00:23 Yeah, procedure arities are normalized. That's a fairly recent addition, actually. 04:00:47 :-) 04:00:55 No, foof, I'm actually daring you to come up with something better than the horrible crock that is run-time keyword argument parsing. 04:02:01 Ah... that's not so simple :/ 04:02:01 I like the way one can do named parameters in SML, but it doesn't work in Scheme. 04:02:11 Scheme is a dynamic language, so we use a dynamic solution. 04:02:44 Just as Scheme's positional arities are checked at runtime. I hope that's not a horrible crock, too. 04:03:38 Anything is better than case-lambda. 04:03:40 For the most part, they don't need to be checked at run-time. 04:04:05 Though perhaps there's some lack of clarity about how Racket's keywords worked. The application itself is "parsed" at compile time. There's no guessing which arguments are keywords based on their values. 04:04:34 And they almost never require conditional branching at application time in practice. 04:04:35 If that's the kind of runtime parsing you meant, I'm happy to say we've done away with that problem. 04:05:34 Maybe. I don't know how Racket's named parameters work. I'm talking about how Common Lisp, Dylan, &c., work. 04:06:11 Oh, yeah. I agree with that. 04:06:33 Smalltalk's named parameter mechanism much less horrible than Common Lisp's, but it's rather klunky rendered into Scheme. 04:06:34 Sorry, I'm spoiled by good keyword arguments, I forget how bad the bad ones get. 04:06:46 What's Smalltalk's mechanism? 04:08:30 The name is simply split into multiple chunks, so, in a sense, the syntax to apply the operation frob-foo:bar:baz: is rendered by writing `frob foo: x, bar: y, baz: z'. (A little more literally, to send a message x:y:z: with arguments p, q, r to the recipient o, you write `o x: p y: q z: r', since there are no operators without recipients.) 04:08:38 gravicappa [~gravicapp@ppp91-77-167-235.pppoe.mtu-net.ru] has joined #scheme 04:09:10 I don't know enough Smalltalk to make sense of that. 04:09:16 So in Scheme you could write (lambda (frob-foo:bar:baz:) ... (Z frob foo: x bar: y baz: x) ...), where Z is the magic application operator. 04:09:31 That would be equivalent to writing (lambda (frob-foo:bar:baz:) ... (frob-foo:bar:baz: x y z) ...). 04:11:03 But how does the magic application operator work? The issue in CL and Dylan was in application recognizing keywords, wasn't it? How does "Z" recognize foo:, bar:, and baz:? Are they syntactically keywords or is there something else? 04:11:28 They're part of the name. Z is just a macro that concatenates `frob', `foo:', `bar:', and `baz:'. 04:11:52 Ah, I see. Can keyword arguments be optional? 04:12:06 Well, not as I rendered the mechanism into Scheme. 04:12:21 But in Smalltalk, they can? 04:12:29 (regardless of mechanism) 04:12:34 In Smalltalk, they essentially can be, because the recipient's class can just have methods foo:bar:baz:, foo:bar:, foo:, &c. 04:14:16 Some day I should learn some Smalltalk. 04:15:46 -!- Jafet [~Jafet@unaffiliated/jafet] has quit [Ping timeout: 250 seconds] 04:19:13 Jafet [~Jafet@unaffiliated/jafet] has joined #scheme 04:20:21 And in SML one can just use records, for which the notation is very lightweight, thanks to its type inference: frob { foo = x, bar = y, baz = z }. With a little extension that I don't think SML supports, record types could probably have default values for fields, enabling optional named parameters. 04:30:53 So Racket extends the application syntax to support static named parameters, and passes them in a tagged argument sequence independent of the positional argument sequence. Consequently, (foo bar baz :quux zot) can reliably pass BAR and BAZ as the positional arguments and ZOT as the argument named QUUX, without danger of BAR's being a keyword itself. Is that right? 04:31:32 Yes. 04:31:59 And the tagged argument sequence is sorted so that parsing runs in linear time rather than in quadratic time, and can reasonably done at link-time or close-time (when you close over a binding) rather than at application-time. 04:32:08 And unquoted keywords are never expressions, so there's no chance :quux was an expression. 04:33:06 It needs to happen at application time when there are optional keyword arguments, but other than that, yes, there's a lot that can be statically known about keywords, and it's designed to be linear. 04:33:41 Yeah, I meant `often can reasonably be done at link-time'. 04:33:54 Yup. 04:33:54 Of course (lambda (f) (f 1 2 3)) loses in the general case. 04:34:08 Eh? 04:34:40 I mean that if you pass in some f that requires keyword arguments it will have to do some conditional branching to find that -- oops -- I forgot to pass them. 04:35:11 Sure, but what if there were no keywords, but f takes only 2 arguments? There's always been application-time conditionals. 04:35:18 -!- tupi [~david@189.60.161.65] has quit [Quit: Leaving] 04:35:30 Yes. It loses whether or not you have keyword arguments. 04:36:01 Yes, in that sense, it loses. Higher order flow analysis is hard. :) 04:36:19 I meant to contrast that with (f 1 2 3) when f is some global variable, or (lambda (f) (lambda () (f 1 2 3))), in both of which cases you can at least easily do the conditional early once at link-time/close-time. 04:37:32 Now, whether Racket actually does this static resolution is another issue. Bear in mind that the keyword system was an "after-market add-on". The underlying application mechanism is unchanged; keywords are an extra layer that the bytecode and JIT don't natively understand. 04:38:04 Sure, but it's pretty clear how to make it work pretty well for what are pretty clearly pretty common cases. 04:38:18 What's left is just a SMOP. 04:38:25 ...SMOP? 04:38:42 Simple matter of programming. 04:38:47 heh 04:40:06 djcb [~user@a88-112-253-18.elisa-laajakaista.fi] has joined #scheme 04:43:10 MichaelRaskin [~MichaelRa@195.178.216.22] has joined #scheme 04:52:26 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Read error: Connection reset by peer] 04:54:25 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 04:55:45 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Read error: Connection reset by peer] 05:02:18 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 05:07:33 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 05:09:14 carleastlund: The jit does "understand" some part in that some functionality that is required for the keyword implementation is jit-inlined. 05:10:17 Yeah, I really shouldn't make claims about the JIT. I know very little about it. 05:11:43 (The same holds for anything, really -- whatever extension you implement in racket can be made faster by making the jit aware of how its implemented, possibly to the point where the extension is all inlined.) 05:12:10 There are explicit hooks to inform the JIT of things? 05:14:46 Or do you just mean "Matthew can make things fast"? 05:19:31 Eataix [~eataix@130.56.86.90] has joined #scheme 05:19:45 carleastlund: The latter. 05:21:50 -!- Eataix [~eataix@130.56.86.90] has quit [Remote host closed the connection] 05:22:01 cky: The `curry' function is not *that* strange -- it just happens to make sense for the common case where you want a variable number of levels to the point that all the function's required arguments are present; 05:22:42 -!- leppie [~lolcow@196-210-170-119.dynamic.isadsl.co.za] has quit [Ping timeout: 240 seconds] 05:22:44 for functions with a variable arity (specifically for those with >=0 args) it tries to do the "right thing" by assuming that you always want one more application level over what you first specify -- so in those cases you're kind of left at the hands of that guess. 05:23:04 (And Carl's version resolves that case by specifying the number of levels you want as a result.) 05:23:34 Eataix [~eataix@130.56.86.90] has joined #scheme 05:26:51 -!- jonrafkind [~jon@jonr5.dsl.xmission.com] has quit [Ping timeout: 250 seconds] 05:27:31 -!- carleastlund [~cce@209-6-40-238.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Quit: carleastlund] 05:28:16 -!- tdignan [~tom@pdpc/supporter/student/tdignan] has left #scheme 05:29:36 -!- djcb [~user@a88-112-253-18.elisa-laajakaista.fi] has quit [Remote host closed the connection] 05:35:53 -!- Eataix [~eataix@130.56.86.90] has quit [Remote host closed the connection] 05:36:11 eli: Makes sense. *nods* 06:20:05 -!- pchrist [~spirit@gentoo/developer/pchrist] has quit [Quit: leaving] 06:20:45 pchrist [~spirit@gentoo/developer/pchrist] has joined #scheme 06:28:46 rotty: What's the documentation mechanism you're using for opt-args.sls, by the way? 06:31:29 Just texinfo? 06:31:55 Wild guess: schmooz? 06:34:40 Riastradh: Thanks for the tip; looks likely. I've been meaning to write something like it, actually; glad Aubrey beat me to the chase. 06:35:14 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 06:35:52 eli, does Racket's named parameter mechanism add any overhead for programs that use only positional parameters? 06:36:02 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote host closed the connection] 06:44:32 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 06:47:13 -!- mmc [~michal@82-148-210-75.fiber.unet.nl] has quit [Quit: Leaving.] 07:00:26 adu_ [~ajr@pool-96-255-9-175.washdc.fios.verizon.net] has joined #scheme 07:00:37 -!- MichaelRaskin [~MichaelRa@195.178.216.22] has left #scheme 07:03:19 Riastradh: A function that has keyword arguments is essentially an applicable struct, with the extra value used when keywords are present in the application. 07:03:35 IOW, `#%app' will pull out that value and use it when it has keywords. 07:03:51 So when there are no keywords in function calls, it just calls the function. 07:04:08 And when there's no keywords in a function definition, it defines it as a simple value. 07:04:16 So the bottom line is 0 cost. 07:07:16 -!- gravicappa [~gravicapp@ppp91-77-167-235.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 07:07:39 ? 07:08:31 -!- acarrico [~acarrico@pppoe-68-142-54-117.gmavt.net] has quit [Read error: Operation timed out] 07:09:31 -!- adu_ is now known as adu 07:11:36 rramsden [~rramsden@173.180.109.6] has joined #scheme 07:15:20 acarrico [~acarrico@pppoe-68-142-54-117.gmavt.net] has joined #scheme 07:18:04 -!- rramsden [~rramsden@173.180.109.6] has quit [Quit: Leaving] 07:23:39 hkBst [~quassel@gentoo/developer/hkbst] has joined #scheme 07:28:00 wingo [~wingo@90.164.198.39] has joined #scheme 07:32:24 EbiDK [511bd602@gateway/web/freenode/ip.81.27.214.2] has joined #scheme 07:44:08 -!- realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has quit [Quit: realitygrill] 07:48:55 realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has joined #scheme 07:53:31 -!- wtetzner [~wtetzner@c-24-218-19-210.hsd1.ma.comcast.net] has quit [Ping timeout: 246 seconds] 07:56:15 Eataix [~eataix@130.56.86.90] has joined #scheme 07:57:03 -!- adu [~ajr@pool-96-255-9-175.washdc.fios.verizon.net] has quit [Ping timeout: 255 seconds] 07:59:38 -!- monqy [~chap@pool-71-102-217-117.snloca.dsl-w.verizon.net] has quit [Quit: hello] 07:59:55 -!- realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has quit [Quit: realitygrill] 08:03:30 adu [~ajr@pool-71-191-159-169.washdc.fios.verizon.net] has joined #scheme 08:04:20 realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has joined #scheme 08:09:51 misterncw [~misterncw@82.71.241.25] has joined #scheme 08:18:59 klutometis: It's a schmooz-like thing I wrote: http://rotty.xx.vu/gitweb/?p=scheme/stexidoc.git;a=summary 08:22:57 klutometis: Note that I still have quite a few outstanding changes not yet pushed 08:23:22 -!- Eataix [~eataix@130.56.86.90] has quit [Remote host closed the connection] 08:23:27 pdelgallego [~pdelgalle@1385159903.dhcp.dbnet.dk] has joined #scheme 08:27:41 -!- pdelgallego [~pdelgalle@1385159903.dhcp.dbnet.dk] has quit [Max SendQ exceeded] 08:28:19 pdelgallego [~pdelgalle@1385159903.dhcp.dbnet.dk] has joined #scheme 08:29:59 -!- Simucal [~Simucal@24-107-2-126.dhcp.stls.mo.charter.com] has quit [Read error: Connection reset by peer] 08:30:00 -!- minsa [~minsa@c-24-5-121-157.hsd1.ca.comcast.net] has quit [Ping timeout: 260 seconds] 08:30:15 -!- misterncw [~misterncw@82.71.241.25] has quit [Remote host closed the connection] 08:30:27 Simucal [~Simucal@24-107-2-126.dhcp.stls.mo.charter.com] has joined #scheme 08:30:32 misterncw [~misterncw@82.71.241.25] has joined #scheme 08:34:09 rramsden [~rramsden@173.180.109.6] has joined #scheme 08:37:37 -!- realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has quit [Quit: realitygrill] 08:39:03 klutometis: see for an example of its HTML output 08:39:53 z0d [~z0d@artifact.hu] has joined #scheme 08:39:53 -!- z0d [~z0d@artifact.hu] has quit [Changing host] 08:39:53 z0d [~z0d@unaffiliated/z0d] has joined #scheme 08:42:16 -!- Articate [~Moriya@pjp-78.uio.no] has quit [Ping timeout: 250 seconds] 08:51:17 -!- Nshag [user@chl45-1-88-123-84-8.fbx.proxad.net] has quit [Ping timeout: 250 seconds] 08:52:59 -!- ckrailo [~ckrailo@pool-173-57-102-171.dllstx.fios.verizon.net] has quit [Quit: Computer has gone to sleep.] 08:58:20 -!- rramsden [~rramsden@173.180.109.6] has quit [Quit: Leaving] 09:05:31 -!- incubot [incubot@klutometis.wikitex.org] has quit [Remote host closed the connection] 09:06:18 incubot [incubot@klutometis.wikitex.org] has joined #scheme 09:15:48 -!- alcuadrado [~alcuadrad@host73.200-45-163.telecom.net.ar] has quit [Ping timeout: 255 seconds] 09:17:54 kenjin2201 [~kenjin@218.235.8.175] has joined #scheme 09:20:37 rotty_web [8dc96dc0@gateway/web/freenode/ip.141.201.109.192] has joined #scheme 09:39:44 Articate [~Moriya@pjp-78.uio.no] has joined #scheme 09:49:47 -!- kenjin2201 [~kenjin@218.235.8.175] has quit [Ping timeout: 252 seconds] 09:51:13 -!- blueadept [~blueadept@unaffiliated/blueadept] has quit [Quit: Leaving] 09:57:37 -!- adu [~ajr@pool-71-191-159-169.washdc.fios.verizon.net] has quit [Quit: adu] 10:01:29 -!- Dark_Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has quit [Ping timeout: 276 seconds] 10:06:34 Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has joined #scheme 10:09:42 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Ping timeout: 246 seconds] 10:11:33 Nshag [user@chl45-1-88-123-84-8.fbx.proxad.net] has joined #scheme 10:37:26 exam in two hours, mah gawd! 10:41:20 so mebe, less irc, moar studeh? 10:41:57 cram time! 10:41:59 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 10:42:02 I've been studying for the last four days straight, I doubt these last two hours will be the make or break :) 10:52:15 gravicappa [~gravicapp@80.90.116.82] has joined #scheme 10:54:10 -!- aoh_ is now known as aoh 10:55:20 -!- vu3rdd [~vu3rdd@fsf/member/vu3rdd] has quit [Remote host closed the connection] 10:59:00 rudybot, (define l (cons (cons 1 (cons 2 (cons 3 '()))) (cons (cons 4 (cons 5 (cons 6 '()))) '()))) 10:59:00 Articate: your sandbox is ready 10:59:01 Articate: Done. 10:59:19 rudybot, (define l2 '((1 2 3) (4 5 6))) 10:59:19 Articate: Done. 10:59:25 rudybot, eval l 10:59:25 Articate: ; Value: ((1 2 3) (4 5 6)) 10:59:31 rudybot, eval l2 10:59:32 Articate: ; Value: ((1 2 3) (4 5 6)) 10:59:36 I rule. 11:00:11 rudybot, (define l3 (list (list 1 2 3) (list 4 5 6))) 11:00:12 Articate: Done. 11:00:15 rudybot, eval l3 11:00:16 Articate: ; Value: ((1 2 3) (4 5 6)) 11:02:54 -!- stepnem [~stepnem@176.119.broadband10.iol.cz] has quit [Ping timeout: 246 seconds] 11:04:26 rudybot, (map car l) 11:04:27 Articate: ; Value: (1 4) 11:06:06 rudybot, eval square 11:06:06 Articate: error: reference to an identifier before its definition: square in module: 'program 11:06:07 Articate: please get your own repl :) racket's ide is lovely and is very easy to download. 11:06:19 I know, but I want to keep you guys company :D 11:06:39 heh 11:10:20 and I just want to show off how awesome I am! 11:13:48 perhaps fewer, more impressive calls to rudybot is optimal. 11:14:05 rudybot: prove P=NP 11:14:06 bremner: wouldn't it be nice if P=NP? 11:20:37 he's got a point. 11:26:02 -!- zeroish [~zeroish@135.207.174.50] has quit [Ping timeout: 248 seconds] 11:27:17 -!- pdelgallego [~pdelgalle@1385159903.dhcp.dbnet.dk] has quit [Ping timeout: 276 seconds] 11:29:26 pjb_ [~pjb@81.202.16.46.dyn.user.ono.com] has joined #scheme 11:29:36 pdelgallego [~pdelgalle@1385159903.dhcp.dbnet.dk] has joined #scheme 11:34:19 stepnem [~stepnem@176.119.broadband10.iol.cz] has joined #scheme 11:40:23 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 11:48:48 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 11:49:34 -!- pjb_ [~pjb@81.202.16.46.dyn.user.ono.com] has quit [Quit: from my iPad] 11:57:18 NaN [~NaN@166.pool85-54-128.dynamic.orange.es] has joined #scheme 12:04:33 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 12:06:13 kenjin2201 [~kenjin@218.235.8.175] has joined #scheme 12:12:59 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 12:15:27 -!- EbiDK [511bd602@gateway/web/freenode/ip.81.27.214.2] has quit [Quit: Page closed] 12:15:48 -!- arbscht [~arbscht@60-234-133-173.bitstream.orcon.net.nz] has quit [Ping timeout: 255 seconds] 12:28:15 arbscht [~arbscht@60-234-133-173.bitstream.orcon.net.nz] has joined #scheme 12:28:38 I believe that proof's been published before, several times. 12:44:27 vu3rdd [~vu3rdd@122.172.227.15] has joined #scheme 12:44:45 -!- vu3rdd [~vu3rdd@122.172.227.15] has quit [Changing host] 12:44:45 vu3rdd [~vu3rdd@fsf/member/vu3rdd] has joined #scheme 12:51:57 Perhaps P=NP, but most NP problems are just polynomian in BB(42). 12:52:03 s/mian/mial/ 12:52:22 Said otherwise, P=NP or not is not the point. 13:01:43 cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined #scheme 13:03:38 that this is not the case is known as "Edmonds' Hypothesis" 13:06:12 tupi [~david@189.60.161.65] has joined #scheme 13:07:47 -!- smartviking [~smartviki@unaffiliated/smartviking] has quit [Ping timeout: 252 seconds] 13:09:11 -!- stepnem [~stepnem@176.119.broadband10.iol.cz] has quit [Ping timeout: 240 seconds] 13:13:49 stepnem [~stepnem@176.119.broadband10.iol.cz] has joined #scheme 13:18:30 -!- vu3rdd [~vu3rdd@fsf/member/vu3rdd] has quit [Remote host closed the connection] 13:38:40 kuribas [~user@d54C43D8A.access.telenet.be] has joined #scheme 13:41:57 -!- kuribas [~user@d54C43D8A.access.telenet.be] has quit [Client Quit] 13:42:58 bremner: do you have any reference to "Edmonds' Hypothesis", google doesn't seem to give anything relevant. 13:43:12 vu3rdd [~vu3rdd@122.172.227.15] has joined #scheme 13:43:16 -!- vu3rdd [~vu3rdd@122.172.227.15] has quit [Changing host] 13:43:16 vu3rdd [~vu3rdd@fsf/member/vu3rdd] has joined #scheme 13:46:56 I guess it might be folklore. It is named after Jack Edmonds, who was at the University of Waterloo for a long time. In any case, as far as I know the idea dates from before the big papers of Cook and Karp 13:47:12 or, I could just be makin' stuff up ;) 14:05:27 -!- gravicappa [~gravicapp@80.90.116.82] has quit [Ping timeout: 240 seconds] 14:05:58 homie [~levent.gu@xdsl-78-35-139-65.netcologne.de] has joined #scheme 14:06:18 wingo: Did you really just pull a "please get a room" comment? :-O 14:06:41 ("Just" being three hours ago, but on IRC, that's an instant. ;-)) 14:07:17 /msg rudybot (+ 1 2) works too... 14:07:30 pjb: Yep, I use that all the time. 14:12:32 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 14:12:57 leppie [~lolcow@196-210-170-119.dynamic.isadsl.co.za] has joined #scheme 14:13:50 -!- NaN [~NaN@166.pool85-54-128.dynamic.orange.es] has quit [Quit: Leaving] 14:25:57 alvatar [~alvatar@179.232.218.87.dynamic.jazztel.es] has joined #scheme 14:26:06 aisa [~aisa@173-10-243-253-Albuquerque.hfc.comcastbusiness.net] has joined #scheme 14:37:50 Articate: behold 14:37:55 rudybot: doc displayln 14:37:55 offby1: your sandbox is ready 14:37:58 offby1: http://docs.plt-scheme.org/reference/Writing.html#(def._((lib._racket%2Fprivate%2Fmisc..rkt)._displayln)) 14:38:18 -!- Jafet [~Jafet@unaffiliated/jafet] has quit [Quit: Leaving.] 14:42:51 realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has joined #scheme 14:42:55 "doc" requires a sandbox? :-O 14:43:29 -!- Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has quit [Ping timeout: 260 seconds] 14:45:32 Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has joined #scheme 14:47:12 -!- alvatar [~alvatar@179.232.218.87.dynamic.jazztel.es] has quit [Quit: leaving] 14:47:17 alvatar [~alvatar@179.232.218.87.dynamic.jazztel.es] has joined #scheme 14:49:42 -!- minion [~minion@tiger.common-lisp.net] has quit [Ping timeout: 246 seconds] 14:54:42 sure 14:54:51 it's running racket code 14:55:06 ckrailo [~ckrailo@208.86.167.249] has joined #scheme 15:05:46 -!- Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has quit [Ping timeout: 250 seconds] 15:08:10 -!- rotty_web [8dc96dc0@gateway/web/freenode/ip.141.201.109.192] has quit [Ping timeout: 252 seconds] 15:08:21 MrFahrenheit [~RageOfTho@62.101.146.61] has joined #scheme 15:09:14 gravicappa [~gravicapp@80.90.116.82] has joined #scheme 15:11:46 Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has joined #scheme 15:14:44 :-O 15:35:23 kenjin2202 [~kenjin@218.235.8.175] has joined #scheme 15:48:41 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 15:51:16 minsa [~minsa@c-24-5-121-157.hsd1.ca.comcast.net] has joined #scheme 15:51:28 pdlogan [~patrick@174-25-37-137.ptld.qwest.net] has joined #scheme 15:52:00 pandeiro [~pandeiro@187.38.240.109] has joined #scheme 16:02:23 -!- hkBst [~quassel@gentoo/developer/hkbst] has quit [Remote host closed the connection] 16:11:10 rramsden [~rramsden@s64-180-62-209.bc.hsia.telus.net] has joined #scheme 16:15:45 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 16:18:30 Caleb-- [~caleb@bzq-79-183-208-188.red.bezeqint.net] has joined #scheme 16:19:16 hey 16:29:30 -!- tupi [~david@189.60.161.65] has quit [Quit: Leaving] 16:29:57 HG` [~HG@p5DC055D0.dip.t-dialin.net] has joined #scheme 16:34:44 -!- misterncw [~misterncw@82.71.241.25] has quit [Remote host closed the connection] 16:38:53 monqy [~chap@pool-71-102-217-117.snloca.dsl-w.verizon.net] has joined #scheme 16:50:32 ymasory [~ymasory@128.91.39.26] has joined #scheme 16:51:14 smartviking [~smartviki@ti0069a380-dhcp0827.bb.online.no] has joined #scheme 16:51:35 -!- smartviking is now known as Guest53542 16:59:37 replore [~replore@ntkngw256114.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 17:00:03 carleastlund [~cce@gotham.ccs.neu.edu] has joined #scheme 17:01:24 blueadept [~blueadept@unaffiliated/blueadept] has joined #scheme 17:02:24 -!- blueadept [~blueadept@unaffiliated/blueadept] has quit [Remote host closed the connection] 17:05:30 blueadept [~blueadept@unaffiliated/blueadept] has joined #scheme 17:06:50 mmc [~michal@82-148-210-75.fiber.unet.nl] has joined #scheme 17:14:04 NaN [~NaN@166.pool85-54-128.dynamic.orange.es] has joined #scheme 17:25:51 -!- Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has quit [Ping timeout: 255 seconds] 17:30:21 cafesofi_ [~cafesofie@ool-18b97779.dyn.optonline.net] has joined #scheme 17:31:15 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Ping timeout: 255 seconds] 17:32:42 Dark-Star [~michael@HSI-KBW-078-043-206-184.hsi4.kabel-badenwuerttemberg.de] has joined #scheme 17:35:10 HG`` [~HG@p5DC0543C.dip.t-dialin.net] has joined #scheme 17:35:41 tupi [~david@139.82.89.24] has joined #scheme 17:37:41 masm [~masm@bl19-166-46.dsl.telepac.pt] has joined #scheme 17:37:54 -!- HG` [~HG@p5DC055D0.dip.t-dialin.net] has quit [Ping timeout: 244 seconds] 17:45:19 sup puppies! 17:45:51 I survived the exam! 17:46:05 ironically, I'm dead beat 17:47:50 I don't think you're a deadbeat, Articate 17:51:10 aww? 17:52:45 congratulations ;) 17:57:39 -!- masm [~masm@bl19-166-46.dsl.telepac.pt] has quit [Ping timeout: 246 seconds] 17:58:10 was as expected. Maaaaybe an A, hopefully a B 17:58:44 probably not an A since I think it might be :o 18:00:10 superstitious? 18:00:59 Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has joined #scheme 18:01:07 -!- kenjin2201 [~kenjin@218.235.8.175] has quit [Read error: Connection reset by peer] 18:01:07 -!- kenjin2202 [~kenjin@218.235.8.175] has quit [Read error: Connection reset by peer] 18:04:50 ijp [~user@host109-154-194-139.range109-154.btcentralplus.com] has joined #scheme 18:05:35 jewel [~jewel@196-215-117-83.dynamic.isadsl.co.za] has joined #scheme 18:07:22 pjb, was X really designed in lisp? 18:07:27 Yea, nowadays, people tend to survive exams. In my time, it was a life or dead affair. 18:07:32 jewel: yep. 18:07:42 There are atoms, and 27-bit things. 18:07:58 PostgreSQL too was written in Lisp at first. 18:08:05 A lot of good things were in lisp at first. 18:09:15 so were there prototypes in lisp? 18:09:21 certainly not a reference implementation? 18:09:37 -!- HG`` is now known as HG` 18:09:52 Well, nowadays it's X version 11. We're talking about X version 1... 18:10:20 does any of that code still exist? 18:10:47 Perhaps not, but there are alternatives: http://www.reddit.com/r/lisp/related/g54ee/a_hackable_x_server_in_55kloc_of_cl/ 18:10:48 http://tinyurl.com/3aq8lqg 18:11:49 5kloc? 18:12:08 lisp is concise. 18:12:14 -!- gravicappa [~gravicapp@80.90.116.82] has quit [Ping timeout: 276 seconds] 18:12:30 i'm pretty sure that says "55" 18:13:44 masm [~masm@bl19-159-94.dsl.telepac.pt] has joined #scheme 18:14:42 -!- mmc [~michal@82-148-210-75.fiber.unet.nl] has quit [Ping timeout: 250 seconds] 18:15:02 -!- turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 18:17:46 No, it's not 55 kloc, it's 5.5 kloc, since the total of lisp code in the repository is 12.406 kloc 18:19:14 mmc [~michal@82-148-210-75.fiber.unet.nl] has joined #scheme 18:35:46 gravicappa [~gravicapp@ppp91-77-222-46.pppoe.mtu-net.ru] has joined #scheme 18:44:09 -!- NaN [~NaN@166.pool85-54-128.dynamic.orange.es] has quit [Ping timeout: 255 seconds] 18:44:48 NaN [~NaN@166.pool85-54-128.dynamic.orange.es] has joined #scheme 18:45:33 turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has joined #scheme 18:47:28 -!- homie [~levent.gu@xdsl-78-35-139-65.netcologne.de] has quit [Read error: Connection reset by peer] 18:48:41 homie [~levent.gu@xdsl-78-35-139-65.netcologne.de] has joined #scheme 18:49:42 jimrees_ [~jimrees@ita4fw1.itasoftware.com] has joined #scheme 18:50:24 -!- homie [~levent.gu@xdsl-78-35-139-65.netcologne.de] has quit [Client Quit] 18:52:57 magic_mage [~gschuette@pool-74-111-197-135.lsanca.fios.verizon.net] has joined #scheme 18:53:53 homie [~levent.gu@xdsl-78-35-139-65.netcologne.de] has joined #scheme 18:56:42 teurastaja [~Samuel@modemcable072.213-81-70.mc.videotron.ca] has joined #scheme 18:57:04 -!- magic_mage [~gschuette@pool-74-111-197-135.lsanca.fios.verizon.net] has left #scheme 18:58:37 djcb [~user@a88-112-253-18.elisa-laajakaista.fi] has joined #scheme 19:05:05 pyrony [~epic@office1.klout.com] has joined #scheme 19:07:27 -!- pumpkin is now known as copumpkin 19:10:40 -!- HG` [~HG@p5DC0543C.dip.t-dialin.net] has quit [Quit: Leaving.] 19:17:41 -!- ToxicFrog [~ToxicFrog@24-246-40-169.cable.teksavvy.com] has quit [Ping timeout: 258 seconds] 19:18:00 jcowan [c6b912cf@gateway/web/freenode/ip.198.185.18.207] has joined #scheme 19:23:07 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 19:23:18 boi 19:25:46 That's "bull" in portuguese. 19:29:17 boishit bingo! 19:29:35 :-) 19:33:27 -!- replore [~replore@ntkngw256114.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 19:35:04 -!- homie [~levent.gu@xdsl-78-35-139-65.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 19:37:37 kuribas [~user@d54C43044.access.telenet.be] has joined #scheme 19:40:15 jcowan: surrounding case-lambda with let doesn't allow you to use dynamic defaults (re: "Case-Lambda"), which makes it less useful -- think about a (string-length s) default for example 19:41:18 Can you expand on your example? 19:42:22 jcowan: think about (substring src start end), the default for start is 0, but the default for end depends on src 19:43:26 I think the default values that depend on others tend to be the ones that require more complex expressions, and the ones you want to repeat less 19:43:27 Fair enough, but Alex was complaining about code duplication. Here all that's duplicated is the zero, and *someone* has to do the counting. 19:44:02 Indeed, in that case you might want to use a different loop altogether, trading code space for efficient execution if it's in your inner loop. 19:50:54 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Ping timeout: 250 seconds] 19:54:07 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 19:55:15 -!- jewel [~jewel@196-215-117-83.dynamic.isadsl.co.za] has quit [Ping timeout: 255 seconds] 20:04:54 somnium [~user@adsl-98-65-189-155.dab.bellsouth.net] has joined #scheme 20:10:51 -!- gravicappa [~gravicapp@ppp91-77-222-46.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 20:16:47 HG` [~HG@p5DC0543C.dip.t-dialin.net] has joined #scheme 20:27:18 -!- cafesofi_ [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote host closed the connection] 20:32:17 seamus-android [~alistair@cpc1-brig7-0-0-cust565.3-3.cable.virginmedia.com] has joined #scheme 20:41:58 zmv [~daniel@c9533906.virtua.com.br] has joined #scheme 20:45:09 EbiDK [3e6b7ac3@gateway/web/freenode/ip.62.107.122.195] has joined #scheme 20:48:41 -!- Guest53542 [~smartviki@ti0069a380-dhcp0827.bb.online.no] has quit [Ping timeout: 240 seconds] 20:55:08 Guest53542 [~smartviki@ti0069a380-dhcp0827.bb.online.no] has joined #scheme 20:55:40 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has left #scheme 20:58:14 -!- pandeiro [~pandeiro@187.38.240.109] has quit [Quit: Thanks, fellas] 20:58:20 cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined #scheme 20:58:35 -!- realitygrill [~realitygr@adsl-76-226-135-132.dsl.sfldmi.sbcglobal.net] has quit [Read error: Connection reset by peer] 21:02:31 realitygrill [~realitygr@adsl-76-226-105-78.dsl.sfldmi.sbcglobal.net] has joined #scheme 21:02:59 ToxicFrog [~ToxicFrog@24-246-40-169.cable.teksavvy.com] has joined #scheme 21:10:02 -!- DT`` [~Feeock@net-93-149-43-212.cust.dsl.teletu.it] has quit [Read error: Connection reset by peer] 21:15:54 -!- wingo [~wingo@90.164.198.39] has quit [Remote host closed the connection] 21:16:28 -!- Guest53542 is now known as SmartViking 21:16:32 -!- SmartViking [~smartviki@ti0069a380-dhcp0827.bb.online.no] has quit [Changing host] 21:16:32 SmartViking [~smartviki@unaffiliated/smartviking] has joined #scheme 21:18:35 -!- minsa [~minsa@c-24-5-121-157.hsd1.ca.comcast.net] has quit [Ping timeout: 276 seconds] 21:26:46 replore_ [~replore@ntkngw256114.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 21:27:22 -!- HG` [~HG@p5DC0543C.dip.t-dialin.net] has quit [Quit: Leaving.] 21:27:37 electronvolt [~Jesus@c-75-75-4-232.hsd1.va.comcast.net] has joined #scheme 21:27:54 DT`` [~Feeock@net-93-149-44-141.cust.dsl.teletu.it] has joined #scheme 21:29:54 -!- alvatar [~alvatar@179.232.218.87.dynamic.jazztel.es] has quit [Quit: leaving] 21:30:44 -!- replore_ [~replore@ntkngw256114.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 21:32:08 wingo [~wingo@90.164.198.39] has joined #scheme 21:35:52 aidalgol [~user@202.36.179.68] has joined #scheme 21:37:27 -!- djcb [~user@a88-112-253-18.elisa-laajakaista.fi] has quit [Remote host closed the connection] 21:41:30 -!- aisa [~aisa@173-10-243-253-Albuquerque.hfc.comcastbusiness.net] has quit [Quit: aisa] 21:48:46 Simucal_ [Simucal@2002:186b:27e:1234:b0ac:4fbb:2dad:3cbb] has joined #scheme 21:50:04 djcb [~user@a88-112-253-18.elisa-laajakaista.fi] has joined #scheme 21:51:21 -!- Simucal [~Simucal@24-107-2-126.dhcp.stls.mo.charter.com] has quit [Read error: Operation timed out] 21:53:52 -!- aidalgol [~user@202.36.179.68] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 21:56:57 -!- ymasory [~ymasory@128.91.39.26] has quit [Quit: Leaving] 21:57:07 THERE'S PARENTHESIS IN MY HEAD 22:00:15 do you have pr()zac? 22:00:26 I dunno, but I'm scared :( 22:00:29 ANOTHER ONE 22:00:33 I NEED TO CLOSE IT 22:00:41 ) 22:00:43 much better. 22:00:50 :D 22:01:53 for a moment, I also felt undefined 22:02:47 -!- zmv [~daniel@c9533906.virtua.com.br] has quit [Ping timeout: 276 seconds] 22:02:50 -!- wingo [~wingo@90.164.198.39] has quit [Ping timeout: 248 seconds] 22:04:58 -!- leppie [~lolcow@196-210-170-119.dynamic.isadsl.co.za] has quit [Read error: Connection reset by peer] 22:05:58 -!- carleastlund [~cce@gotham.ccs.neu.edu] has quit [Quit: carleastlund] 22:06:23 -!- seamus-android [~alistair@cpc1-brig7-0-0-cust565.3-3.cable.virginmedia.com] has quit [Quit: Leaving] 22:07:40 -!- Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has quit [Quit: "Object-oriented design" is an oxymoron] 22:09:35 Is NaN ever really defined? 22:10:37 good point there 22:11:22 Chuck Norris has a value for NaN 22:12:38 leppie [~lolcow@196-210-170-119.dynamic.isadsl.co.za] has joined #scheme 22:19:53 -!- vk0 [~vk@ip-23-75.bnaa.dk] has quit [Ping timeout: 276 seconds] 22:21:23 vk0 [~vk@ip-23-75.bnaa.dk] has joined #scheme 22:21:33 entrix [~entrix@93-80-219-152.broadband.corbina.ru] has joined #scheme 22:22:22 -!- Simucal_ [Simucal@2002:186b:27e:1234:b0ac:4fbb:2dad:3cbb] has quit [Quit: Leaving] 22:29:53 -!- pdlogan [~patrick@174-25-37-137.ptld.qwest.net] has left #scheme 22:30:47 -!- kuribas [~user@d54C43044.access.telenet.be] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 22:38:10 -!- framling [~user@cpe-74-64-94-88.hvc.res.rr.com] has quit [Read error: Connection reset by peer] 22:41:05 -!- EbiDK [3e6b7ac3@gateway/web/freenode/ip.62.107.122.195] has quit [Quit: Page closed] 22:41:49 -!- tupi [~david@139.82.89.24] has quit [Quit: Leaving] 22:52:15 -!- masm [~masm@bl19-159-94.dsl.telepac.pt] has quit [Quit: Leaving.] 22:59:01 There are 2^53 different values of NaN, IIRC. 23:00:53 In the IEEE 754 binary double floating-point format, there are 2^53 - 2 distinct NaN values. 23:02:42 The always handy Wikipedia 23:03:00 :P 23:03:32 What's Wikipedia got to do with it? 23:04:47 Wikipedia is what gives us 30 IQ points. 23:04:49 NaN: Riastradh needs no Wikipedia to understand NaNs. He lives with one. 23:05:31 Though I myself would say that there are that many distinct representations of NaN, but only one value. 23:05:44 @pjb: Are you a XKCD reader too? 23:05:57 yes. 23:06:01 jajaja 23:06:06 great 23:06:40 that's a lot of duplicatin... 23:06:45 duplication* 23:06:48 I still think that using flonums to represent fixed-point rationals otta work fine: do the flonum operation, truncate bits that exceed the relevant precision, and check for range overflow. 23:07:24 The question is, does one need to do all that at every step, or only when storing the result in a fixed-point rational? 23:07:38 (I'm assuming static typing of variables.) 23:10:06 -!- djcb [~user@a88-112-253-18.elisa-laajakaista.fi] has quit [Remote host closed the connection] 23:10:34 Gosh! What kind of nerd are us? 23:10:43 barglfargl [4b8b9057@gateway/web/freenode/ip.75.139.144.87] has joined #scheme 23:10:46 hi 23:11:01 Hmm... I see I have been using the term `floating-point value' where the canonical IEEE 754 term is `floating-point datum'. 23:11:19 Alas, there is nobody in #ieee754 to answer this question. 23:11:30 so, I want to learn how to write functional code in a way that will allow me to, say, write games 23:12:01 have read through the little schemer and a bit of the sicp and have been writing scheme code, but still find it very difficult to structure purely functional code 23:12:17 i've just started to read through Okasaki's thesis, am I headed in the right direction? 23:12:58 Well, games require maintenance of state, so you have to decide how you are going to do that. Scheme is not pure functional, so that's one approach, or you can use one of a variety of tricks to carry state about with you. 23:13:24 jcowan: like what, continuations? monads? 23:14:23 I would like to avoid ! as much as possible 23:15:22 Choice is the fate of Scheme programmers. There is no One True Way. 23:15:22 barglfargl: how about Land of Lisp 23:15:58 it ain't scheme but same idea 23:16:02 cipher: doesn't Land of Lisp use CL and lots of destructive updates? 23:16:13 I thumbed through a few pages of it at a bookstore 23:16:24 jcowan: could you point me to anything specific? 23:16:46 You seem to understand the issues; nobody can tell you which will suit {you, your application} best. 23:17:01 Also, closures are poor man's objects. 23:17:08 I understand the issues, but do not know much of the possible solutions 23:17:10 that's true 23:17:10 That lets you use set! while hiding it. 23:17:58 hmm 23:18:45 I thought that objects were the poor man's closures? :-) 23:18:50 heh 23:19:21 any other "tricks"? 23:20:08 fds: That too. 23:20:35 I'm completely lost as how to manage state without copying lots and lots of data each update 23:20:41 None of the approaches you mention are EVIL and WRONG. 23:21:31 Using state to represent state is perfectly fine. That's what it's for. 23:21:37 let's say I thought set! was EVIL 23:22:00 maybe you want #haskell? 23:22:06 : ( 23:22:57 That's like thinking first-class continuations are EVIL. Or first-class closures. Or parentheses. 23:23:14 parentheses _are_ evil! 23:23:18 Or the Command pattern. 23:23:19 oh, wrong channel again. 23:23:29 first-class continuations aren't evil, but the ying yang puzzle is 23:23:41 )Parentheses are only evil when they look like this.( 23:23:48 augh 23:24:13 (I know I shouldn't do that, it frightens the Emacsoids. But hey.) 23:24:36 )* )+ 1 2( 3( 23:24:37 like >clickety< for web folk 23:25:02 It's nice how is just another Scheme identifier. 23:29:55 -!- mmc [~michal@82-148-210-75.fiber.unet.nl] has quit [Quit: Leaving.] 23:30:16 wtetzner [~wtetzner@c-174-62-239-154.hsd1.ma.comcast.net] has joined #scheme 23:31:38 so, know anything I should read to help me along this pursuit? 23:33:20 IMHO you should extend your wings and try flying at this point. If at first you can't succeed, the trash can is always available. 23:33:36 In the end you learn to write good code by writing code, not by reading about how to write code. 23:33:45 that's true 23:33:54 "Good judgement is a matter of experience, and experience is a matter of bad judgement." 23:34:04 the game I tried to write, the update loop passed around too much data each frame 23:34:30 or maybe it didn't, and I'm prematurely optimizing 23:35:48 I do know that there's been a lot of success writing mostly functional games in Clean and Haskell, could learn one of them and port my knowledge over to scheme 23:36:37 Optimization without measurement is clearly premature. 23:36:47 But I do like the Command pattern. 23:37:09 I will read about that, then, thanks 23:42:29 I am going to go play videos games or draw with crayons or do anything to get my mind off of this, thanks again 23:42:42 -!- barglfargl [4b8b9057@gateway/web/freenode/ip.75.139.144.87] has quit [Quit: Page closed] 23:43:45 masm [~masm@bl19-159-94.dsl.telepac.pt] has joined #scheme 23:46:01 -!- rramsden [~rramsden@s64-180-62-209.bc.hsia.telus.net] has quit [Quit: Leaving] 23:54:52 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 250 seconds] 23:58:41 ymasory [~ymasory@c-76-99-55-224.hsd1.pa.comcast.net] has joined #scheme