00:09:34 antoszka [n=antoszka@unaffiliated/antoszka] has joined #scheme 00:18:02 -!- neilv [n=user@dsl092-071-029.bos1.dsl.speakeasy.net] has quit ["Leaving"] 00:23:58 -!- MrFahrenheit [i=RageOfTh@SE400.PPPoE-5440.sa.bih.net.ba] has quit [Read error: 54 (Connection reset by peer)] 00:31:38 QinGW [n=wangqing@203.86.81.2] has joined #scheme 00:39:52 fnord123 [n=fnord123@94-195-126-216.zone9.bethere.co.uk] has joined #scheme 00:44:45 -!- mrsolo [n=mrsolo@nat/yahoo/x-9c851912d7995b16] has quit ["Leaving"] 00:46:31 -!- masm [n=masm@213.22.191.93] has quit [Read error: 113 (No route to host)] 00:51:31 MrFahrenheit [i=RageOfTh@SE400.PPPoE-2469.sa.bih.net.ba] has joined #scheme 00:58:59 QinGW1 [n=wangqing@203.86.81.2] has joined #scheme 01:00:22 jengle [n=jengle@64.252.88.235] has joined #scheme 01:05:23 -!- Fufie [n=innocent@86.80-203-225.nextgentel.com] has quit [Read error: 104 (Connection reset by peer)] 01:09:00 hi 01:13:18 chylli [n=lchangyi@119.181.15.104] has joined #scheme 01:15:14 -!- Modius [n=Modius@24.174.112.56] has quit [Read error: 110 (Connection timed out)] 01:18:17 -!- QinGW [n=wangqing@203.86.81.2] has quit [Connection timed out] 01:19:14 jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has joined #scheme 01:20:00 eli: ping 01:21:56 jcowan: pong. 01:22:49 9 bytes from jcowan@irc.freenode.net: time=163114ms 01:23:38 I got a reply to my filed bug on Chicken macros that return defines: http://lists.gnu.org/archive/html/chicken-users/2009-07/msg00062.html 01:24:53 jcowan: I think he's right. 01:27:01 jcowan: The key point there is "within whose scope the instance of <> appears" 01:27:18 foof: His argument is sound, but is his interprettation of R5RS correct, is the question. 01:27:34 how can i create a list of procedures to call consecutively? 01:28:11 jcowan: But in any case, whatever your original example might by (it might be that your example didn't show the problem properly) -- it can't behave differently for (define foo 1) and for (begin (define foo 1) foo) 01:28:31 Just because the latter is supposed to just splice the the expressions. 01:28:52 So without even going down to r5rs-nit-picking, chicken loses. 01:28:56 rudybot: eval (list (lambda (x) (* 3 x)) add1 (lambda (y) (printf "Y is ~a~%" y))) 01:28:56 *offby1: ; Value: (# # #) 01:29:01 rudybot: eval (define procs (list (lambda (x) (* 3 x)) add1 (lambda (y) (printf "Y is ~a~%" y)))) 01:29:15 rudybot: eval (for ([p (procs)]) (p 3)) 01:29:15 *offby1: error: procedure application: expected procedure, given: (# # #) (no arguments) 01:29:24 rudybot: eval (for ([p procs]) (p 3)) 01:29:24 *offby1: ; stdout: "Y is 3\n" 01:29:30 rudybot: eval (for/list ([p procs]) (p 3)) 01:29:30 *offby1: ; Value: (9 4 #) 01:29:31 *offby1: ; stdout: "Y is 3\n" 01:29:37 jengle: there ya go 01:30:30 jengle: another answer would be: "the same way you make a list of anything -- with 'list', or 'cons', or things like those" 01:31:15 offby1, i think that the word "list" was a poor choice on my part 01:32:56 jengle: ok, then; what's a better word? 01:32:58 -!- luz [n=davids@189.122.90.116] has quit ["Client exiting"] 01:34:01 rudybot: why aren't you funny, like incubot? 01:34:01 *offby1: eh? Try "rudybot: help". 01:34:02 let me explain: i have a conditional statement, and if the condition is false, i want scheme to run two procedurese, one right after another. 01:34:10 incubot: why are you funnier than rudybot? 01:34:16 slap rudybot again 01:34:18 jengle: ok ... 01:34:35 wastrel [n=wastrel@nylug/member/wastrel] has joined #scheme 01:34:42 (if yow (whatever) (begin (proc-one) (proc-two))) ... 01:34:46 -!- rouslan [n=Rouslan@unaffiliated/rouslan] has quit [Read error: 104 (Connection reset by peer)] 01:34:50 -!- underspecified [n=eric@softbank220043052007.bbtec.net] has quit [] 01:36:22 offby1, thanks 01:37:48 oh! 01:37:52 was that all it was? 01:41:50 yup :D 01:42:03 foof: hey, how's the chibi-on-p9 going? 01:49:20 rouslan [n=Rouslan@unaffiliated/rouslan] has joined #scheme 01:51:31 -!- jengle [n=jengle@64.252.88.235] has quit ["Leaving"] 01:56:37 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 01:59:09 eli: according to Bushnell's claims, Chicken is allowed to be randomly inconsistent in how it treats top-level defines (as binding or not binding), which apparently trumps the claim that (begin foo bar) is supposed to be equivalent to foo followed by bar 02:02:07 jcowan: I'm very happy for Bushnell then. It's cute to see people living in dream worlds. 02:02:36 Well, but can you refute it by appeal to the text of R5RS? 02:07:01 jcowan: in his reply, "the binding established *before* the define ever runs, and the define itself being equivalent to set!" seems completely unrelated to me. It reads as if he's saying that chicken is doing some analysis of the macro code and concludes that there should be a `foo' definition before the macro is ever used. 02:07:02 jcowan: Blessed Be Its Name 02:07:21 I assume you're talking about Candace Bushnell, author of "Sex And The City". 02:08:29 jcowan: In any case, I hate these kind of language lawyer digging -- just the idea of random behavior depending on the `begin' expression seems so completely bogus, that r5rs digging for excuses to allowing it just doesn't make any sense. 02:09:17 jcowan: It might make sense to make up such excuses if the excuse-making person is someone who wants to avoid the extra work; but it doesn't make sense for "us, the programmers who want to use the thing". 02:09:44 jcowan: And if you look at the example I gave synx yesterday -- it's something *very* useful that I've used in multiple occasions. 02:09:45 offby1, that interpretation certainly puts a different spin on this conversation. 02:10:12 (What does "BSG" stand for again?) 02:10:49 jcowan: In any case, it looks like you didn't mention the `begin' thing, so trying that might be more convincing, 02:11:11 "Brotherhood of St. Gregory" 02:11:17 He's an Anglican monk. 02:11:19 jcowan: I'd also try to see how chicken responds to (a) changing the order of expressions inside the `begin' so that the definition becomes last 02:11:28 *eli* ughs 02:11:42 -!- saccade [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Read error: 113 (No route to host)] 02:11:56 jcowan: and (b) trying to see if there's any effect to a `begin' wrap around just the single `define' form. 02:12:36 jcowan: You could also just go for broke and start digging through R5RS interpretation -- but my experience is that this will only be good in making it into a useless flameway. 02:12:41 s/y./r./ 02:14:17 Looks like I was simply wrong: both (begin (define foo 1) foo) and (begin 32 (define foo 1)) cause foo to be defined. 02:14:58 As syntax-rules templates. 02:15:17 For that matter, so they do when directly evaluated. 02:15:48 Oh, _Thomas_ Bushnell! Late of the Hurd. He's been around forever. 02:16:38 jcowan: Another thing to look for is differences between compiled and interpreted code. 02:17:46 *jcowan* nods. 02:17:54 jcowan: Is there any *simple* sequence of commands I can enter (some wget-configure-make) to get a chicken repl? 02:19:02 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Remote closed the connection] 02:19:06 *offby1* laughs cruelly 02:19:14 I think you need chicken to build chicken 02:19:22 It takes a tough hacker to ... oh never mind 02:19:35 Well, yes. 02:20:41 OK, I'll never mind then... 02:21:05 It's straightforward 02:21:13 $ svn co https://galinha.ucpel.tche.br/svn/chicken-eggs/chicken/trunk 02:21:15 $ cd trunk 02:21:23 $ make PLATFORM=linux bootstrap 02:21:26 (or whatever your platform is) 02:21:40 dsmith [n=dsmith@173.88.196.177] has joined #scheme 02:21:48 $ make PLATFORM=linux CHICKEN=./chicken-boot 02:21:58 $ sudo make PLATFORM=linux install 02:22:44 If you just "make PLATFORM=linux", doesn't it normally self-bootstrap? 02:22:55 No, it complains that you don't have an installed chicken. 02:22:59 -!- fnord123 [n=fnord123@94-195-126-216.zone9.bethere.co.uk] has quit [Read error: 110 (Connection timed out)] 02:23:08 It's been a while since I compiled, so perhaps I don't... ah. 02:23:45 jcowan: it asks me for a username/password. 02:24:16 Blank. 02:24:35 Tried that. It insists. 02:24:40 Ouch. 02:24:51 Sorry, username is "anonymous", password is blank. 02:25:04 That only happens the first time, so I had forgotten it. 02:26:53 Adamant [n=Adamant@66.213.192.210] has joined #scheme 02:27:42 *eli* avoids a whole bunch of bad jokes. 02:27:52 -!- wastrel [n=wastrel@nylug/member/wastrel] has left #scheme 02:28:40 -!- copumpkin [n=pumpkin@dhcp-212-202.cs.dartmouth.edu] has quit ["Leaving..."] 02:28:42 jcowan: Is it fine to avoid the sudo line? 02:29:45 jcowan: And how do I get the repl when I'm done compiling? 02:29:47 I don't know. Probably. 02:29:56 The interpreter is "csi", so try "./csi" 02:29:59 Modius [n=Modius@24.174.112.56] has joined #scheme 02:31:12 *jcowan* has probably forgotten a lot about the first time. 02:38:08 underspecified [n=eric@walnut.naist.jp] has joined #scheme 02:40:15 *jcowan* wonders if eli has succeeded or given up in disgust (or boredom, or whatever) 02:48:28 -!- soupdragon [n=f@amcant.demon.co.uk] has quit ["Leaving"] 02:53:00 -!- underspecified [n=eric@walnut.naist.jp] has quit [] 02:53:24 tjafk1 [n=timj@e176211195.adsl.alicedsl.de] has joined #scheme 02:55:04 or if his son is demanding ice cream 02:55:15 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 02:55:33 Darki [i=Darkstar@p57B549DB.dip.t-dialin.net] has joined #scheme 02:55:55 offby1: damn, i could use some 02:55:55 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 02:56:13 *offby1* bought creamsicles at the store yesterday 02:56:16 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 02:56:26 oh, nice; orange? haven't had those in years 02:56:27 good emergency rations for when it's 85° indoors at 8 PM 02:56:35 klutometis: orange indeed! 02:57:50 incubot: creamsicle 02:58:03 incubot: They killed Kenny! 02:58:06 1) he's completely sane, 2) he killed himself out of guilt, 3) he got exactly the dish he ordered, 4) he killed himself because of knowledge gained from the dish 03:03:40 -!- MrFahrenheit [i=RageOfTh@SE400.PPPoE-2469.sa.bih.net.ba] has quit [Connection timed out] 03:05:09 incubot: That's why I never order rabbit. 03:05:12 in order to construct, say, a list of regular expressions, I used backquote and comma 03:05:38 geez 03:05:47 what word did it trigger on there -- "I" ? 03:05:54 oh, "order" 03:06:08 incubot: rabbit 03:06:11 "But isn't that Rabbit's voice?" 03:06:20 incubot: bunny 03:06:23 yes and i had to chance chicken.h to make C_word 64bit wide...(actually to trigger C_SIXTYFOUR to be defined) 03:06:43 .oO( bunny == chicken? ) 03:07:50 -!- Dark-Star [i=Darkstar@p57B551D2.dip.t-dialin.net] has quit [Read error: 110 (Connection timed out)] 03:08:17 -!- tjafk2 [n=timj@e176199180.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 03:08:34 ... 03:09:01 -!- ken-p [n=ken-p@84.92.70.37] has quit [Connection timed out] 03:11:16 underspecified [n=eric@walnut.naist.jp] has joined #scheme 03:12:17 foof: that sentence was probably uttered by someone whose nick was "bunny" 03:12:21 rudybot: seen bunny 03:12:21 *offby1: No sign of bunny 03:12:27 rudybot: seen frapulapulous 03:12:27 *offby1: No sign of frapulapulous 03:14:02 karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 03:16:46 -!- hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has quit [simmons.freenode.net irc.freenode.net] 03:16:46 -!- ski__ [n=md9slj@remote3.student.chalmers.se] has quit [simmons.freenode.net irc.freenode.net] 03:18:13 ski__ [n=md9slj@remote3.student.chalmers.se] has joined #scheme 03:18:27 -!- TimMc is now known as incutest 03:18:32 This is a test. 03:18:35 -!- incutest is now known as TimMc 03:18:45 incubot: incutest 03:19:28 Then again, maybe the logs are shoveled in on a daily basis. 03:19:59 offby1: Actually, since the person was changing chicken.h, it was almost certainly uttered by Bunny351. 03:20:00 incubot: incutest 03:20:25 rudybot: seen Bunny351 03:20:25 TimMc: Bunny351 was seen joining in/on :#scheme three days, three hours ago, and then Bunny351 was seen leaving the channel in/on #scheme three days, three hours ago, saying ""ERC Version 5.2 (IRC client for Emacs)"" 03:20:46 incubot: slap me silly, deadmeat. 03:20:49 well if its you being lazay about secheme then I think a slap would clear that up ;) 03:21:27 incubot: hank uo. 03:21:30 (hand hank honk hook hoot foot) ... real 0m19.109s 03:22:34 FRed looks neat. 03:22:43 thesnowdog_ [i=thesnowd@122.110.29.120] has joined #scheme 03:29:34 -!- arcfide [n=arcfide@adsl-99-50-230-208.dsl.bltnin.sbcglobal.net] has left #scheme 03:30:32 jcowan: No, I just wondered off on something else... 03:32:16 -!- QinGW1 [n=wangqing@203.86.81.2] has quit ["Leaving."] 03:32:49 QinGW [n=wangqing@203.86.81.2] has joined #scheme 03:34:17 So, PLT will apparently become the next Java once 03:34:33 MrEd gets ``fixed.'' 03:34:38 *eli* slaps karlw 03:35:33 Becoming Java, is like ... 03:36:06 Though I guess it already is considering how elegant the source code for JVM is. 03:36:40 Huh? 03:36:44 karlw: You mean, PLT will become the next programming language named after a food or island? 03:37:03 I demand a more precise likening! 03:37:47 peter_12 [n=peter_12@S01060024016bb36c.gv.shawcable.net] has joined #scheme 03:39:49 I'm being sarcastic. 03:40:14 -!- thesnowdog [i=thesnowd@122.110.29.120] has quit [Connection timed out] 03:40:24 *TimMc* taps his foot 03:42:17 It's somewhat painful how Java turned out considering how much funding Sun gave it. 03:43:46 *karlw* bangs his head against the wall. 03:45:16 And plt is related to that ... how? 03:45:32 *eli* is rechecking his bank account 03:47:15 I suppose you mean funding rather than banging my head against the wall. 03:47:54 PLT is not related to that in any way whatsoever. 03:47:57 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [] 03:48:34 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 03:49:01 So from that we learn that plt is related to your banged head? 03:50:39 karlw: Do you have a concussion? Quick, design a type system! 03:50:45 It seems to be all the rage, you see. 03:51:15 Partially, but not in a thoroughly negative way. 03:51:34 *TimMc* dreams of nullable primitives 03:51:44 jcowan: ping 03:51:59 In the sense that it can be like a ``significant other.'' 03:53:03 Parts of it have a weight problem now also. 03:53:51 But that's not necessarily a bad thing either. 03:54:10 rudybot: later tell jcowan: tmp.barzilay.org/x.txt 03:54:10 minion: memo for jcowan:: eli told me to tell you: tmp.barzilay.org/x.txt 03:54:10 Remembered. I'll tell jcowan: when he/she/it next speaks. 03:55:06 -!- langmartin [n=user@exeuntcha.tva.gov] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 03:56:10 karlw: The "weight problem" is a by-product of what makes PLT a practical system, and a project that survived for more than a decade, which is a very rare thing in the academic world, and also in the Scheme world. 03:58:59 PLT is overweight in a tasteful way while C++ is the new McDonald 03:59:05 's mascot. 04:00:02 Or, rather, the new flamin' onion dinner-at-Fentons-everyday mascot. 04:01:21 Its size does limit what plt can do, but I think the theory is it enables more than it limits. 04:01:43 In other words, I'm content with PLT. 04:01:53 karlw: The thing is that there are things that are heavier than elegant, becuase they do what they do well enough, and rewriting the code is going to be an investment that does not justify itself -- not in an academic sense, and not in advancing-the-language-implementation way. 04:03:34 -!- thesnowdog_ is now known as thesnowdog 04:03:46 I think MrEd is pretty good for a GUI kit. It just doesn't always behave as well as GTK with my tiling WM. 04:04:34 QinGW1 [n=wangqing@203.86.81.2] has joined #scheme 04:04:35 -!- QinGW [n=wangqing@203.86.81.2] has quit [Read error: 60 (Operation timed out)] 04:06:19 If I wanted a ``better integrated'' GUI, though, I would just use the FFI with GTK. 04:08:17 oh ffi 04:09:18 karlw: The plan is to eventually have it all in Scheme, with a gtk backend on linux. 04:09:53 But until that happens, rolling your own gtk bindings (or even using an existing set) is much worse than using mred. 04:10:47 You'd never appreciate that until you write a non-trivial application, and see it running fine on OSX and Windows too. 04:11:23 Actually, as a ``(l)user'' myself, I'd really like to see a refined drawing library with a good visual editor. I can't draw with my hands. 04:12:20 My biggest issue with mred is the behavior of text fields. Lacks certain defaults, such as Ctrl-v to paste text in, and doesn't handle the middle-click selection paste trick in Linux. 04:12:53 Those thing would obviously work with a gtk backend. 04:13:12 Yeah, I strongly prefer MrEd's coding style to wx or gtk. 04:14:37 I'm not a GUI type at all, so all the GUI's I write are just hacked together for my grandmother or something. 04:15:46 I prefer using a Scheme REPL as my UI. 04:18:36 As far as ``weight'' is concerned, Chicken is good for (relatively) small stand-alone executables. 04:19:38 The whole ``image dump'' strategy does feel a bit... well, yeah. 04:25:52 jonrafkind [n=jon@98.202.86.149] has joined #scheme 04:29:33 -!- foof [n=user@dn157-046.naist.jp] has quit [Read error: 60 (Operation timed out)] 04:32:46 Yeah, GTK is pretty much what people expect out of a GUI. 04:35:47 So the plan is to have backends for GTK, Windows standard GUI, and Cocoa? 04:37:57 It's not the size of the executable that bugs me, so much as how much memory it uses. A memory heavy application is limited in what it can do. (spawn large number of processes quickly, f/i) 04:38:35 -!- underspecified [n=eric@walnut.naist.jp] has quit [] 04:40:29 Well, the fact that PLT has a dynamic, high level, ``Scheme-like'' GUI says a lot for it. 04:41:00 underspecified [n=eric@walnut.naist.jp] has joined #scheme 04:42:27 -!- Axioplase_ is now known as Axioplase 04:43:19 -!- peter_12 [n=peter_12@S01060024016bb36c.gv.shawcable.net] has quit [Read error: 54 (Connection reset by peer)] 04:44:53 Compared with, say, guile-gnome. 04:50:15 leppie|work [i=52d2e3c8@gateway/web/freenode/session] has joined #scheme 05:03:57 -!- sphex [n=nobody@74.56.138.185] has quit [Remote closed the connection] 05:04:35 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 05:07:22 dfeuer [n=dfeuer@wikimedia/Dfeuer] has joined #scheme 05:10:59 -!- sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Remote closed the connection] 05:11:27 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 05:17:51 -!- sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Remote closed the connection] 05:23:00 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Read error: 104 (Connection reset by peer)] 05:47:25 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 05:52:35 -!- sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Remote closed the connection] 05:58:44 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 06:02:06 -!- underspecified [n=eric@walnut.naist.jp] has quit [] 06:03:56 -!- sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Remote closed the connection] 06:08:26 drdo [n=psykon@167.111.54.77.rev.vodafone.pt] has joined #scheme 06:09:47 underspecified [n=eric@isa7-dhcp-116-204.naist.jp] has joined #scheme 06:12:52 *jcowan* speaks just to get the bot going 06:12:58 or perhaps not 06:12:59 jcowan, memo from rudybot: eli told me to tell you: tmp.barzilay.org/x.txt 06:14:07 -!- QinGW1 [n=wangqing@203.86.81.2] has quit [Read error: 104 (Connection reset by peer)] 06:14:40 foof [n=user@walnut.naist.jp] has joined #scheme 06:14:46 QinGW [n=wangqing@203.86.81.2] has joined #scheme 06:15:38 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 06:16:57 -!- jonrafkind [n=jon@98.202.86.149] has quit [Connection timed out] 06:37:39 ken-p [n=ken-p@84.92.70.37] has joined #scheme 06:45:01 -!- jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has left #scheme 06:47:45 -!- foof [n=user@walnut.naist.jp] has quit [Read error: 104 (Connection reset by peer)] 06:48:45 hotblack23 [n=jh@p5B056F14.dip.t-dialin.net] has joined #scheme 07:00:48 -!- bunz [n=bunz@unaffiliated/bunz] has quit [Read error: 110 (Connection timed out)] 07:06:46 foof [n=user@walnut.naist.jp] has joined #scheme 07:13:40 Thren_ [n=Thren@c-75-67-111-180.hsd1.nh.comcast.net] has joined #scheme 07:14:38 -!- Thren [n=Thren@c-75-67-111-180.hsd1.nh.comcast.net] has quit [Read error: 104 (Connection reset by peer)] 07:18:25 npe [n=npe@195.207.5.2] has joined #scheme 07:22:48 -!- underspecified [n=eric@isa7-dhcp-116-204.naist.jp] has quit [] 07:27:03 QinGW1 [n=wangqing@203.86.81.2] has joined #scheme 07:30:37 rstandy [n=rastandy@net-93-144-29-239.t2.dsl.vodafone.it] has joined #scheme 07:31:04 -!- QinGW [n=wangqing@203.86.81.2] has quit [Read error: 60 (Operation timed out)] 07:34:46 underspecified [n=eric@walnut.naist.jp] has joined #scheme 07:36:02 Edico [n=Edico@unaffiliated/edico] has joined #scheme 07:38:39 antoszka_ [n=antoszka@unaffiliated/antoszka] has joined #scheme 07:39:40 -!- antoszka [n=antoszka@unaffiliated/antoszka] has quit [Read error: 104 (Connection reset by peer)] 07:43:13 masm [n=masm@213.22.191.93] has joined #scheme 07:51:22 -!- antoszka_ is now known as antoszka 07:52:58 jewel [n=jewel@dsl-242-130-65.telkomadsl.co.za] has joined #scheme 08:00:23 -!- foof [n=user@walnut.naist.jp] has quit [Read error: 110 (Connection timed out)] 08:02:04 Fufie [n=poff@Gatekeeper.vizrt.com] has joined #scheme 08:02:37 mmc [n=mima@esprx01x.nokia.com] has joined #scheme 08:04:46 foof [n=user@dn157-046.naist.jp] has joined #scheme 08:05:50 attila_lendvai [n=ati@catv-89-132-189-132.catv.broadband.hu] has joined #scheme 08:43:31 bunz [n=bunz@unaffiliated/bunz] has joined #scheme 08:46:12 -!- vandemar [i=holy@2001:470:1f10:56b:0:0:0:4] has quit [Read error: 60 (Operation timed out)] 08:48:34 -!- m811 [n=user@84-50-207-42-dsl.est.estpak.ee] has quit [""If you put a million monkeys at a million keyboards, one of them will eventually write a Java program. The rest of them will] 08:49:50 -!- Adrinael [n=adrinael@barrel.rolli.org] has quit [Read error: 60 (Operation timed out)] 08:53:52 Adrinael [i=adrinael@rid7.kyla.fi] has joined #scheme 08:58:26 vandemar [i=rings@2001:470:1f10:56b:0:0:0:4] has joined #scheme 09:17:42 Axioplas1 [n=Axioplas@130.34.188.206] has joined #scheme 09:18:41 -!- Axioplase [n=Axioplas@fortigate.kb.ecei.tohoku.ac.jp] has quit [Read error: 113 (No route to host)] 09:19:52 -!- Axioplas1 [n=Axioplas@130.34.188.206] has quit [Client Quit] 09:19:57 Axioplase [n=Axioplas@fortigate.kb.ecei.tohoku.ac.jp] has joined #scheme 09:25:57 athos [n=philipp@92.250.250.68] has joined #scheme 09:30:41 -!- Axioplase is now known as Axioplase_ 09:36:32 hkBst [n=hkBst@gentoo/developer/hkbst] has joined #scheme 09:38:49 heat [n=dima@8.21.172.227] has joined #scheme 09:39:45 -!- heat_ [n=dima@8.21.172.227] has quit [Read error: 104 (Connection reset by peer)] 09:42:59 -!- sladegen [n=nemo@unaffiliated/sladegen] has quit [Nick collision from services.] 09:43:08 sladegen [n=nemo@unaffiliated/sladegen] has joined #scheme 09:53:21 neilv [n=user@dsl092-071-029.bos1.dsl.speakeasy.net] has joined #scheme 10:01:02 -!- socialite [n=piespy@dynamic-78-8-0-147.ssp.dialog.net.pl] has quit [Read error: 110 (Connection timed out)] 10:06:56 socialite [n=piespy@78.8.138.56] has joined #scheme 10:16:17 -!- cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has quit ["If technology is distinguishable from magic, it is insufficiently advanced."] 10:25:16 -!- QinGW1 [n=wangqing@203.86.81.2] has quit [Connection timed out] 10:32:24 fnord123 [n=fnord123@94-195-126-216.zone9.bethere.co.uk] has joined #scheme 10:32:51 kib2 [n=kib@bd137-1-82-228-159-28.fbx.proxad.net] has joined #scheme 10:39:00 refusenik [n=DFowler@ip-66-9-231-226.autorev.intellispace.net] has joined #scheme 10:47:57 Kusanagi [n=Lernaean@unaffiliated/kusanagi] has joined #scheme 10:55:19 -!- masm [n=masm@213.22.191.93] has quit [Read error: 113 (No route to host)] 10:56:33 antoszka_ [n=antoszka@unaffiliated/antoszka] has joined #scheme 10:57:17 -!- antoszka [n=antoszka@unaffiliated/antoszka] has quit [Read error: 104 (Connection reset by peer)] 10:58:08 -!- jewel [n=jewel@dsl-242-130-65.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 11:06:54 cracki [n=cracki@40-123.eduroam.RWTH-Aachen.DE] has joined #scheme 11:12:06 -!- antoszka_ is now known as antoszka 11:13:03 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 11:17:59 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 11:19:31 -!- Darki [i=Darkstar@p57B549DB.dip.t-dialin.net] has quit [] 11:22:03 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 11:22:46 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 11:25:50 masm [n=masm@213.22.191.93] has joined #scheme 11:40:59 m811 [n=user@84-50-207-42-dsl.est.estpak.ee] has joined #scheme 11:44:10 cracki_ [n=cracki@40-123.eduroam.RWTH-Aachen.DE] has joined #scheme 11:44:42 -!- cracki_ [n=cracki@40-123.eduroam.RWTH-Aachen.DE] has quit [Client Quit] 11:44:50 cracki_ [n=cracki@40-123.eduroam.RWTH-Aachen.DE] has joined #scheme 11:56:46 i think i might go back and port htmlprag to plt 4 12:02:02 -!- cracki [n=cracki@40-123.eduroam.RWTH-Aachen.DE] has quit [Read error: 110 (Connection timed out)] 12:06:21 ejs [n=eugen@nat.ironport.com] has joined #scheme 12:06:41 antoszka_ [n=antoszka@unaffiliated/antoszka] has joined #scheme 12:07:31 -!- antoszka [n=antoszka@unaffiliated/antoszka] has quit [Read error: 104 (Connection reset by peer)] 12:11:24 -!- antoszka_ is now known as antoszka 12:13:13 mario-goulart [n=user@201-40-162-47.cable.viacabocom.com.br] has joined #scheme 12:16:04 rocketman [n=f@amcant.demon.co.uk] has joined #scheme 12:19:20 MrFahrenheit [i=RageOfTh@SE400.PPPoE-4165.sa.bih.net.ba] has joined #scheme 12:28:21 `Peter [n=pk@188-23-7-253.adsl.highway.telekom.at] has joined #scheme 12:39:23 RageOfThou [i=RageOfTh@SE400.PPPoE-4727.sa.bih.net.ba] has joined #scheme 12:41:43 -!- MrFahrenheit [i=RageOfTh@SE400.PPPoE-4165.sa.bih.net.ba] has quit [Read error: 110 (Connection timed out)] 12:43:41 -!- ecraven [n=nex@140.78.42.103] has quit ["brb"] 12:44:46 ecraven [n=nex@140.78.42.103] has joined #scheme 12:51:31 -!- neilv [n=user@dsl092-071-029.bos1.dsl.speakeasy.net] has quit ["Leaving"] 12:54:39 -!- `Peter [n=pk@188-23-7-253.adsl.highway.telekom.at] has quit [] 12:56:32 -!- drdo [n=psykon@167.111.54.77.rev.vodafone.pt] has quit [Remote closed the connection] 13:16:20 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 13:16:54 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 13:19:00 higepon255 [n=taro@FL1-125-197-200-195.tky.mesh.ad.jp] has joined #scheme 13:25:26 HG` [n=wells@xdsleb180.osnanet.de] has joined #scheme 13:35:12 bombshelter13_ [n=bombshel@toronto-gw.adsl.erx01.mtlcnds.ext.distributel.net] has joined #scheme 13:40:35 blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 13:46:33 -!- athos [n=philipp@92.250.250.68] has quit ["leaving"] 13:47:11 -!- underspecified [n=eric@walnut.naist.jp] has quit [] 13:48:56 `Peter [n=pk@188-23-6-200.adsl.highway.telekom.at] has joined #scheme 13:49:11 -!- RageOfThou [i=RageOfTh@SE400.PPPoE-4727.sa.bih.net.ba] has quit [Read error: 110 (Connection timed out)] 13:50:27 underspecified [n=eric@walnut.naist.jp] has joined #scheme 13:50:34 MrFahrenheit [i=RageOfTh@SE400.PPPoE-7160.sa.bih.net.ba] has joined #scheme 13:50:43 -!- dsmith [n=dsmith@173.88.196.177] has quit ["Leaving"] 13:51:14 -!- underspecified [n=eric@walnut.naist.jp] has quit [Client Quit] 13:53:42 langmartin [n=user@exeuntcha.tva.gov] has joined #scheme 13:54:33 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Read error: 110 (Connection timed out)] 13:55:46 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 13:56:14 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 14:00:08 -!- `Peter [n=pk@188-23-6-200.adsl.highway.telekom.at] has quit [] 14:00:14 -!- karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has quit [Remote closed the connection] 14:02:28 -!- cracki_ [n=cracki@40-123.eduroam.RWTH-Aachen.DE] has quit ["If technology is distinguishable from magic, it is insufficiently advanced."] 14:07:07 wingo-pi [n=wingo-pi@74.Red-80-24-4.staticIP.rima-tde.net] has joined #scheme 14:22:58 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 14:24:40 cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has joined #scheme 14:27:16 jewel [n=jewel@dsl-242-130-65.telkomadsl.co.za] has joined #scheme 14:34:08 ejs1 [n=eugen@77.222.151.102] has joined #scheme 14:35:38 yay! 14:35:44 ARGH 14:35:49 naw. 14:35:50 *gnomon* jolts violently 14:35:55 I'm awake, I'm awake, what's going on? 14:35:57 I was responding to i think i might go back and port htmlprag to plt 4 14:36:01 Oh. 14:36:04 from 2.5 hours ago 14:36:15 but now that you mention it, WAKE UP!! 14:36:24 I was just resting my eyes. 14:36:43 checking your eyelids for pinholes. 14:37:14 Refining my echolocation skizzils. 14:42:52 -!- ejs [n=eugen@nat.ironport.com] has quit [Read error: 110 (Connection timed out)] 14:43:51 jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has joined #scheme 14:44:37 bweaver [n=user@c-68-60-0-190.hsd1.tn.comcast.net] has joined #scheme 14:50:07 -!- ejs1 [n=eugen@77.222.151.102] has quit ["This computer has gone to sleep"] 15:00:08 -!- higepon255 [n=taro@FL1-125-197-200-195.tky.mesh.ad.jp] has quit [Remote closed the connection] 15:01:44 -!- Fufie [n=poff@Gatekeeper.vizrt.com] has quit ["Leaving"] 15:08:26 -!- jao [n=jao@21.Red-83-43-33.dynamicIP.rima-tde.net] has quit [Remote closed the connection] 15:08:35 `Peter [n=pk@188-23-14-67.adsl.highway.telekom.at] has joined #scheme 15:15:51 -!- MrFahrenheit [i=RageOfTh@SE400.PPPoE-7160.sa.bih.net.ba] has quit [Read error: 104 (Connection reset by peer)] 15:17:41 Leonidas pasted "Pointless use of TCO" at http://paste.lisp.org/display/84380 15:27:26 -!- rouslan [n=Rouslan@unaffiliated/rouslan] has quit [Read error: 104 (Connection reset by peer)] 15:29:40 jonrafkind [n=jon@98.202.86.149] has joined #scheme 15:29:49 hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 15:30:14 MrFahrenheit [i=RageOfTh@89.146.168.4] has joined #scheme 15:34:05 Fabse [n=mightyfi@wikipedia/Track-n-Field] has joined #scheme 15:35:48 Leonidas use LETREC 15:35:53 -!- vandemar [i=rings@2001:470:1f10:56b:0:0:0:4] has quit [Read error: 60 (Operation timed out)] 15:37:11 underspecified [n=eric@softbank220043052007.bbtec.net] has joined #scheme 15:37:52 rocketman: why? What advantage does it have? 15:38:13 (honest question, I have never understood the difference between LET* and LETREC) 15:39:10 vandemar [i=holy@2001:470:1f10:56b:0:0:0:4] has joined #scheme 15:39:38 if you used LET* you'd get an error about odd? being undefined 15:42:47 rocketman: and why should I use LETREC at all? This works reasonably well, apart from being terribly slow to determine thether 2^30 is even or odd :) 15:45:40 rocketman: defines within a body (even the top-level one) are normally converted into some form of letrec* anyways. So no need to use LETREC explicitly 15:46:57 Leonidas: that is proper tail recursion, not TCO, I dont even know what TCO is. TCE yes (but this is not it), but not TCO. 15:51:06 -!- `Peter [n=pk@188-23-14-67.adsl.highway.telekom.at] has quit [] 15:51:13 leppie: you're right. I meant tail recursion. Tail call optimization is what makes this able to run for hours without eating all stack space. 15:51:36 but it is not an optimization, its a requirement :) 15:51:57 in fact tail calls are 7 times slower on .NET than normal calls :( 15:52:00 leppie: TCE is maybe a better term than TCO, but many people call it TCO, so I'm used to the term. 15:52:05 hardly optimized for speed 15:52:29 leppie: I guess 'optimization' is generally a misnomer for it. 15:52:37 schmir [n=schmir@mail.brainbot.com] has joined #scheme 15:52:42 TCE involves removing the tail call in the underlying code, like making 2 local labels in C, and jumping between them 15:53:01 Once I understood that it is not a optimizatuon at all, it started to make sense. 15:53:26 it is kinda a 'space' optimization, but I would not really call it that 15:54:35 leppie: I know; have seen the SICP lectures. But I haven't yet written a tail call code that doesn't call itself directly but some other function. This is why I was so fascinated by this slow and useless way to determine whether a number is odd. 15:55:47 it's just a demonstration, normal people would just do (zero? (bitwise-and x 1)) 15:55:47 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 15:56:13 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 15:56:33 Hmm, is there a maximum of calls that get eliminated this way? Or can I use an arbitrary number of functions that call each other in tail position. 15:56:46 leppie: sure. 15:56:47 time to clean the cat crap :( 15:56:50 arbitrary 15:57:20 nice. 15:57:23 Leonidas: all tail calls must be properly tail recursive, else it serves no point, and your loop will likely blow up 15:58:00 if you cheat even with 1 call, you will get space growth 15:58:23 wingo-pi: I built guile 1.9.1 yesterday. Worked fine after I compiled libunistring. libunistring seems to be quite new, isn't it? 15:58:50 leppie: yep. Btw, is there a way to check automatically whether they are tail recursive? 15:58:58 Leonidas: relatively, yes, the code has been around for a while tho 15:59:07 (tail-recursive? proc) or something. 15:59:40 wingo-pi: because it is not yet packaged by Debian, meaning that Guile 2.0 will have a hard time entering debian... 16:00:02 known issue, google debian libunistring 16:02:02 -!- npe [n=npe@195.207.5.2] has quit [] 16:09:01 Leonidas: i'm not sure, but it's rather easy to determine in the compiler 16:10:42 Leonidas, guaranteeing proper tail recursion means specifically that there may be any number of active calls to procedures in tail positions. 16:12:56 That's a property of Scheme implementations. Here's a procedure that tells you whether a Scheme implementation guarantees proper tail recursion, assuming that it is an implementation of Scheme: (define (properly-tail-recursive?) #t) 16:13:15 heh 16:13:23 However, whether a procedure requires a bounded amount of intermediate space to execute is not as easy to detect. 16:14:18 For that matter, neither is it easy to detect, for an arbitrary implementation of a recursive programming language, whether it is properly tail recursive. 16:14:58 I don't mean to beat a dead horse, but calling tail-call elimination an optimization is kind of like saying the most important part of living in a free society is being able to eat at McDonald's. 16:15:23 `Tail call elimination' sounds like eliminating tail calls so that they don't happen. 16:17:27 my idea of TCE is turning named let loops into something like while (true) { .... } in my underlying code 16:18:18 given you save the cost of a function call, and possibly closure allocation, it is definitely an optimization to me, but I guess thats really up to the implementation 16:18:44 Most implementations of, say, C, Java, &c., turn `while (true) { ... }' into a recursive procedure in the underlying code... 16:19:55 -!- Fabse [n=mightyfi@wikipedia/Track-n-Field] has quit [] 16:20:01 leppie, the fact that it ends up producing more efficient code is a plus, sure, but the big deal is the freedom you get from not having to worry about manually managing your program flow, not the cost you pay in terms of memory or execution time for the constructs you use. 16:20:17 *Riastradh* coughs. 16:21:05 well I do that in the compiler, the user never needs or should worry about those things 16:21:35 I got lost in the analogy, but I hope that nobody walks away thinking that proper tail recursion is about compiler optimization, or isn't about the amount of memory a program uses. 16:21:48 I'm saying that it's not *just* about that, Riastradh. 16:22:14 Riastradh: I agree with you 16:22:50 What else is it about, gnomon? In any recursive programming language you can already express recursive ideas straightforwardly. 16:24:35 Riastradh, I'm just trying (and apparently failing) to assert that there's an important difference between tail calls that are cheap in terms of memory and execution time, and those that are entirely free. 16:25:04 (Proper tail recursion isn't directly about the amount of time programs take to execute, either, incidentally -- what it has to do with directly is only the amount of space a program requires.) 16:27:34 gnomon, can you clarify, using technical terms, what the two differiends are? (`Differiend' is (now) a technical term, of course, although I'm looking more for words such as `bounded' and `space', or perhaps `proportional', or other words relating to algorithmic complexity.) 16:28:50 mrsolo [n=mrsolo@nat/yahoo/x-jlxopjpmzlktpwvl] has joined #scheme 16:29:16 -!- jonrafkind [n=jon@98.202.86.149] has quit [Read error: 60 (Operation timed out)] 16:30:23 Riastradh, I suppose I could, but I'm arguing a point of perception on the part of programmers new to Scheme rather than a technical point. I really don't think I'm saying anything you don't already know, or with which you disagree. 16:30:25 Aha! Are you saying that there is an important difference between (a) a compiler that occasionally speeds code up by reducing the bookkeeppiinngg performed by certain calls in tail positions; and (b) an implementation in which there is guaranteed to be no bound on the number of active tail calls? 16:30:29 Riastradh: I know that TCO/E is required for Scheme implementation, I was just wondering whether there is a way that my implemnentation could tell me that it has seen the tail call and "optimizes" it. 16:30:53 Leonidas, the technical term for what Scheme requires that an implementation guarantee is `proper tail recursion', not `TCO' or `TCE'. 16:31:10 Leonidas: if it is Scheme, it *always* recognizes and "optimizes" it 16:31:11 Riastradh, that's the point I'm trying to assert, yes; and furthermore that it is important for programmers new to Scheme to make the important distinction between a compiler optimization and a language guarantee. 16:31:20 OK, gnomon. 16:31:35 ...thus the tortured analogies. 16:31:39 God, I need more coffee. 16:32:00 Leonidas: RnRS describes exactly where tail calls must be, and a few other places they could be but not required 16:33:41 so any application in the tail position, must be a tail call 16:33:51 Leonidas, the terminology of the R5RS is pretty precise on this point, and it's important to understand precisely what it's saying. Any particular active tail call might be occupying space in memory, but there exists some constant bound on space such that at any time, if you consider the set of all active tail calls at that time, the amount of space required by them is no more than the bound. 16:33:55 thats the gaurentee 16:35:05 So, for instance, a Scheme implementation might record an execution history of k active tail calls, for some constant k. Then each of those active tail calls contributes to the amount of space used by the program, but no more than k times some constant amount of space is used to record information about active tail calls, no matter how many active tail calls there are. 16:35:28 ecraven: I just want a way to find out whether my code is using tail calls. 16:36:08 Leonidas: If you are using (a proper) Scheme, it must. Look in RnRS for how to find where exactly tail calls are. 16:36:09 Leonidas, have you read the R5RS's Section 3.5 `Proper tail recursion'? 16:36:52 (that section is over at http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-6.html#%_idx_78 , if you don't have a local copy of the spec) 16:36:54 -rudybot:#scheme- http://tinyurl.com/mbfv5y 16:36:56 I suppose you are misunderstanding me. 16:37:02 I probably am :) 16:37:10 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [No route to host] 16:37:12 Me too :) 16:37:25 You can look at the generated byte- or machine-code, to find out. 16:37:42 sreeram [n=sreeram@122.174.64.194] has joined #scheme 16:37:49 ecraven, assuming that you're also familiar with whatever mechanism is actually executing said byte- or machine code. 16:37:52 ecraven: yeah, this would be a possibility. I just wonder whether there is an easier way. 16:38:09 gnomon: Most of them are documented somewhere :) 16:38:20 Leonidas, what information are you seeking that you have not yet adequately found? 16:38:28 Leonidas: you could probably use any 'match' 16:38:29 Leonidas: Not from inside Scheme, as Scheme guarantees TCO anyway. 16:38:42 ecraven, the term is `proper tail recursion'. 16:39:04 I apologise, I'll try to remember ;) 16:39:05 Tail call optimization is something that GCC does, to speed up certain tail calls. 16:39:11 Or SBCL. 16:39:31 Does anyone except Schemers call it PTR? 16:39:53 ecraven, anyone used to DNS probably does. 16:41:10 Riastradh: R5RS says "A tail call is a procedure call that occurs in a tail context." So far so good. The information I am missing is whether there is a way (as in function, not as in "look at the code and figure it out") to find out whether a procedure is a "tail call" (citing the wording from R5RS). 16:41:29 Leonidas, easy: a procedure is not a tail call. 16:42:04 oh, damn, I overlooked the word "call". Trying again. 16:42:15 But since a procedure call is not a first-class entity in Scheme, much less the context relative to which you want to know whether it is a tail call, there is no way to pass it to a predicate to discern whether the procedure call is in a tail position relative to that context. 16:42:27 Leonidas: You can write Scheme code that analyses s-exps and tells you which expressions are in a tail context. 16:44:16 ...or you could look at the list of tail call positions in the aforementioned section of R5RS. It's quite a short list. 16:44:26 Leonidas: and doing that anylysis on fully expanded code, would probably be a brezze :p 16:45:20 leppie: hmm, analyzing the s-exps on the fully expanded code seems to be the way to go. 16:45:23 Adamant [n=Adamant@131.107.204.126] has joined #scheme 16:45:38 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [Remote closed the connection] 16:45:45 ecraven, very few languages guarantee proper tail recursion. I suspect that SML does, but my copy of its standard is a hundred miles away from me right now. 16:45:48 a splicing 'begin' might be hard to analyse, you will likely just deal with lambda in exapnded code 16:46:33 Riastradh: Do the SMLers call it "proper tail recursion"? 16:47:04 Riastradh: believe it or not, F# is also properly tail recursive, but then again, it comes from the ML family (OCaml I think) 16:48:12 F# is mostly OCaml, afaik 16:48:20 leppie, does F# have a standard definition? 16:48:53 I'm not sure, but I can look :) 16:49:13 http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html 16:49:15 -rudybot:#scheme- http://tinyurl.com/mdhwkd 16:49:18 OCaml, apparently, according to some mailing list archives I just stumbled across, is not, in fact, properly tail recursive, or at least wasn't ten years ago. 16:50:25 wingo-pi: is the guile-1.9 documentation available online somewhere? 16:50:26 just 3 mentions of 'tailcall' in that doc :( 16:50:45 but the one reference seems to imply it 16:51:02 'Addresses generated by the && operator must not be passed to functions that are in tailcall position.' 16:51:17 ecraven, anyway, the standard reference is Clinger, `Proper Tail Recursion and Space Efficiency.' If you see a language definition that does not cite that paper, you should be concerned that it does not actually require proper tail recursion. 16:51:40 At the moment Scheme is the only language I can think of whose implementations are required to be properly tail recursive. 16:51:43 Leonidas: not yet, no 16:51:49 This seems to imply that .NET has PTR: http://flyingfrogblog.blogspot.com/2009/01/mono-does-not-support-tail-calls.html 16:51:52 -rudybot:#scheme- http://tinyurl.com/c8am79 16:52:06 Riastradh: Thanks for the link 16:52:30 wingo-pi: are there many C-API changes since 1.8? 16:52:51 I am just doing a (display "Hello world") example from C 16:57:26 Leonidas: not many, no -- the NEWS has them all 16:57:29 ecraven: yes .NET does support tail calls, but whether F# is properly tail recursive is another story 16:57:42 I use the same bytecode in my compiler for IronScheme 16:58:25 Dylan, by the way, encourages implementations to optimize tail calls, but does not require them to guarantee proper tail recursion. 16:59:23 it would kinda be stupid for a language that expresses iteration via recursion to not be tail recursive 17:00:07 jonrafkind [n=jon@crystalis.cs.utah.edu] has joined #scheme 17:00:25 Oh, Erlang guarantees proper tail recursion. Unfortunately, the reference manual is rather terse on the subject. It does not, however, talk about `optimizing tail calls'. 17:05:39 -!- kib2 [n=kib@bd137-1-82-228-159-28.fbx.proxad.net] has left #scheme 17:06:08 -!- masm [n=masm@213.22.191.93] has quit ["Leaving."] 17:06:44 why are you saying it's not an optimization? 17:07:05 rocketman, to whom was that question directed? 17:07:11 There is an optimization called tail call optimization that compilers such as GCC and SBCL perform to reduce the time that certain procedure calls take. 17:07:47 time, dont you mean space, Riastradh? 17:08:05 It may also reduce the amount of space. 17:08:32 ohh, I thought that was all it did :) (i am used to slow tail calls) 17:08:35 -!- roderic [n=user@bubbles.ccs.neu.edu] has quit [Read error: 54 (Connection reset by peer)] 17:08:40 roderic [n=user@bubbles.ccs.neu.edu] has joined #scheme 17:08:55 There is a property of implementations of recursive programming languages called proper tail recursion that finitely bounds the amount of space that can be required by the active tail calls in any program. 17:10:28 Tail call optimization and proper tail recursion are entirely different beasts. Tail call optimization may not suffice to guarantee proper tail recursion. For example, if you compile Scheme procedures into Common Lisp procedures with the intent of executing the code on SBCL, you probably won't get a properly tail recursive implementation of `Scheme', even though SBCL optimizes some tail calls. 17:12:51 Proper tail recursion may cause some procedure calls to be slower than they would have been without proper tail recursion. For example, a compiler might generate code that goes to extra work to clobber an existing stack frame with the contents of a new stack frame. This might cause that particular procedure call to run more slowly than the same procedure call without clobbering the existing stack frame. 17:13:13 that's me :) 17:13:37 I just hope with the sudden interest in F#, that MS will improve the speed of them 17:13:57 but I guess that will be long wait 17:15:01 `Peter [n=pk@188-23-1-177.adsl.highway.telekom.at] has joined #scheme 17:17:26 . 17:22:15 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 17:22:44 Riastradh: IIRC, it was Clinger who started the trend of avoiding "recursion" in the term, because too many people were confused by that as something that applies only to recursive self-calls. 17:22:47 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 17:22:53 flaschenwein [n=olaf_rog@p5080A234.dip0.t-ipconnect.de] has joined #scheme 17:23:29 Leonidas: It sounds like you've just discovered it, and the next thing on the todo list is to get to immediately recognize when a call appears in a tail position. 17:24:04 Leonidas: This is actually something that you can determine by just looking at the code (in other words, it is a property that a compiler can tell, without running the code). 17:24:46 Leonidas: For example, DrScheme can show you which expressions are in tail position (including the chain of tail-position expressions to the root of the function) using its check syntax tool 17:24:48 basically anything that returns from a procedure is a tail call 17:24:50 -!- roderic [n=user@bubbles.ccs.neu.edu] has quit [Read error: 104 (Connection reset by peer)] 17:24:53 roderic [n=user@bubbles.ccs.neu.edu] has joined #scheme 17:25:31 leppie: re "normal people would just do (zero? (bitwise-and x 1))" -- you have a very strange idea of normality. 17:26:12 leppie: The whole point of having `even?' is that it expresses what you want to check; the work of optimizing it using a bitwise operation is not something that the programmer should do in a language that has `even?'. 17:26:24 (Otherwise what's the point of having it...) 17:26:46 saccade [n=saccade_@COMBINATOR.MIT.EDU] has joined #scheme 17:27:05 no, I meant, me as the provider of the even? procedure, would implement it like that 17:27:20 or something like that 17:27:57 I guess there must be 100's of ways to implement it 17:29:52 Ah, well, in that case what do I care... 17:30:13 The job of implementors is to properly profile all 100 ways, and find the best one. 17:30:59 Or if there is more than one, find how to determine the best method, and try to dispatch to the different method and measure the result to see if the decision itself is not making it too expensive. 17:31:15 true 17:31:16 (Which is something that can be relevant in some cases -- for example, `remove-duplicates'.) 17:32:02 like chosing between just using a list or go for an intermediary hash-table or hash-set? 17:32:23 weinholt [i=weinholt@debian/emeritus/weinholt] has joined #scheme 17:32:38 -!- socialite [n=piespy@78.8.138.56] has quit [Read error: 113 (No route to host)] 17:35:07 -!- wingo-pi [n=wingo-pi@74.Red-80-24-4.staticIP.rima-tde.net] has quit ["Leaving"] 17:36:53 -!- mmc [n=mima@esprx01x.nokia.com] has quit [Remote closed the connection] 17:37:51 -!- cky [n=cky@24.211.255.249] has quit ["BRB, reboot."] 17:39:09 leppie: Yes, exactly. The overhead of a hash table is big enough that you need a pretty long list. 17:39:21 -!- chylli [n=lchangyi@119.181.15.104] has left #scheme 17:39:47 how long is pretty long? 10, 20, 50, 100? 17:39:55 It's set to lists of more than 40 items in our current implementations. 17:40:13 I guess that depends on the speed of length and the hashtable procs 17:40:27 -!- `Peter [n=pk@188-23-1-177.adsl.highway.telekom.at] has quit [] 17:40:38 Yes. 17:40:49 In .NET they recommend switching from an array to a hashtable at around a length of ten 17:41:38 the hashtables are damn fast, I could not even get close to the same speed implementing it myself 17:43:32 thats another optimization I made with psyntax and it's huge ribs, helped me out a lot 17:51:29 `Peter [n=pk@188-23-1-177.adsl.highway.telekom.at] has joined #scheme 17:52:54 eli: thanks, didn't know that. 17:55:08 leppie: mzscheme's hash tables are pretty fast too, but (a) so are its lists, and (b) they still probably have a cost that the .net thing does not have -- they are aware of concurrent access. 17:55:24 eli: I did know about tail calls before, but haven't yet written any code that works with it, since it often ents with something like (+ 1 ...) thus making the call appear in non tail-position 17:55:58 Leonidas: The real magic becomes apparent in things that are heavier than even/odd. 17:56:03 yip, the normal hashtables are not 'syncronized' ones 17:56:36 Leonidas: For example, if you implement an evaluator in Scheme, the question is whether the language you implement has TCO or not. 17:56:48 In Scheme, the answer is almost always "yes". 17:57:36 This came up in a question on stackoverflow recently -- where someone suggested using CL and plain loops instead of tail calls, which is a bogus concept, 17:57:40 Leonidas: In those cases, you need to use an accumulator. 17:57:57 since you won't get a TCO evaluator. 17:58:31 So if you want an implementation of your own language (a meta *circular* evaluator), then you'd need to extend it with special forms for iteration too. 18:06:34 okay, thanks :) 18:09:00 cky [n=cky@cpe-024-211-255-249.nc.res.rr.com] has joined #scheme 18:16:33 YAY, I can sleep late tomorrow, no train smashes at work! 18:18:45 man, and I thought Ubuntu was bad with the size of their security updates, MS just released one that is 360MB in size for 'a' single security issue. 18:20:32 -!- bombshelter13_ [n=bombshel@toronto-gw.adsl.erx01.mtlcnds.ext.distributel.net] has quit [Read error: 104 (Connection reset by peer)] 18:20:54 -!- leppie [n=lolcow@196-210-146-211-tvwt-esr-2.dynamic.isadsl.co.za] has quit [] 18:22:26 masm [n=masm@213.22.191.93] has joined #scheme 18:25:13 leppie [n=lolcow@196-210-146-211-tvwt-esr-2.dynamic.isadsl.co.za] has joined #scheme 18:25:50 -!- HG` [n=wells@xdsleb180.osnanet.de] has quit [Client Quit] 18:35:21 leppie: I'm waiting for APT to get binary patching 18:40:24 -!- hotblack23 [n=jh@p5B056F14.dip.t-dialin.net] has quit ["Leaving."] 18:41:40 Leonidas pasted "PLT SIGSEGV" at http://paste.lisp.org/display/84392 18:42:04 I don't get it, why does it segfault? 18:42:36 It segfaults only when I add scheme_eval_string() but according to the small example from the documentation, this should be okay. 18:43:08 or do I need to set the error_buf? 18:44:11 oh, wait, this depends on the GC that I use, right? 18:44:35 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 18:47:50 rouslan [n=Rouslan@unaffiliated/rouslan] has joined #scheme 18:49:34 kib2 [n=kib@bd137-1-82-228-159-28.fbx.proxad.net] has joined #scheme 18:53:44 ok, problem solved by mzc --xform 18:56:58 bombshelter13_ [n=bombshel@toronto-gw.adsl.erx01.mtlcnds.ext.distributel.net] has joined #scheme 18:57:48 uhm, embedding PLT seems to be trickier than I thought. It creates huge executables with long arrays containing.. something (any hints what is contained in these arrays?). 19:05:04 -!- leppie|work [i=52d2e3c8@gateway/web/freenode/x-elqtqnzcckuxsbrm] has quit [Ping timeout: 180 seconds] 19:20:44 -!- rouslan [n=Rouslan@unaffiliated/rouslan] has quit [Read error: 60 (Operation timed out)] 19:21:06 rouslan [n=Rouslan@unaffiliated/rouslan] has joined #scheme 19:21:12 -!- glogic [n=glogic@97.76.48.98] has quit ["Leaving."] 19:21:16 glogic [n=glogic@97.76.48.98] has joined #scheme 19:21:44 -!- datkin_ [n=datkin@pinball.ccs.neu.edu] has quit [Read error: 60 (Operation timed out)] 19:21:47 datkin_ [n=datkin@pinball.ccs.neu.edu] has joined #scheme 19:25:02 -!- attila_lendvai [n=ati@catv-89-132-189-132.catv.broadband.hu] has quit ["..."] 19:27:00 -!- fnord123 [n=fnord123@94-195-126-216.zone9.bethere.co.uk] has quit ["leaving"] 19:29:08 saccade_ [n=saccade@dhcp-18-188-74-28.dyn.mit.edu] has joined #scheme 19:32:34 it's sad when your site's 2nd bigger referrer is wikipedia :( 19:32:48 s/bigger/biggest 19:34:57 no it's not 19:35:36 alaricsp [n=alaricsp@88-202-202-24.rdns.as8401.net] has joined #scheme 19:44:10 -!- rouslan [n=Rouslan@unaffiliated/rouslan] has quit [Remote closed the connection] 19:49:59 athos [n=philipp@92.250.250.68] has joined #scheme 19:54:40 fnord123 [n=fnord123@94-195-126-216.zone9.bethere.co.uk] has joined #scheme 19:55:42 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 54 (Connection reset by peer)] 19:55:53 Fufie [n=innocent@86.80-203-225.nextgentel.com] has joined #scheme 19:56:02 leppie: Why in the world would that be sad? 19:56:13 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 19:56:44 because that is not even a lot :) 19:57:01 jengle [n=jengle@64.252.88.235] has joined #scheme 19:57:38 like a post a picture of a spider eating a bird, and it gets 12k hits in 1 day, yet my scheme site, barely do that in 3 months :( 19:57:52 like i posted a picture of a spider ... 19:58:02 was an awesome pic though :) 20:00:24 rouslan [n=Rouslan@unaffiliated/rouslan] has joined #scheme 20:26:27 mmc [n=mima@cs162149.pp.htv.fi] has joined #scheme 20:29:00 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Read error: 113 (No route to host)] 20:29:20 jao [n=jao@21.Red-83-43-33.dynamicIP.rima-tde.net] has joined #scheme 20:29:25 -!- `Peter [n=pk@188-23-1-177.adsl.highway.telekom.at] has quit [] 20:30:12 leppie: Link! 20:30:30 ironscheme.codeplex.com 20:30:32 :) 20:30:33 I know what you mean though. 20:30:37 hehe 20:30:42 No! Spider-bird-pic! 20:31:05 silly 20:31:28 http://xacc.wordpress.com/2008/10/28/itsy-bitsy-spider-omfg/ 20:32:39 sweet zombie jesus 20:32:51 I take it you don't live in North America? 20:33:22 nope, and I didnt take the pic, came from my GF's aunt that lives in Australia 20:33:53 -!- rouslan [n=Rouslan@unaffiliated/rouslan] has quit [Remote closed the connection] 20:34:00 dunno if she took it either 20:34:03 Ah, OK. 20:34:15 but someone did, and lived to get the film developed :p 20:34:49 I've heard of bird-eating spiders, but I didn't know anything made a web strong enough to stop a bird. 20:35:00 -!- mario-goulart [n=user@201-40-162-47.cable.viacabocom.com.br] has quit [Remote closed the connection] 20:35:03 s/bird\./mid-sized bird./ 20:35:29 when I was young I was taught that spider web is incredibly strong 20:39:17 It is strong for its weight, but it is usually not very thick. 20:40:19 Fresh spider silk from a web's radial can be pretty strong, but usually that isn't the sticky stuff. 20:42:23 Mental note: never ever go to Australia 20:45:26 -!- jewel [n=jewel@dsl-242-130-65.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 20:45:49 -!- jengle [n=jengle@64.252.88.235] has quit ["Leaving"] 20:47:18 Phaze [n=PhazeDK@0x5da32b16.cpe.ge-0-1-0-1104.soebnqu1.customer.tele.dk] has joined #scheme 20:49:01 -!- flaschenwein [n=olaf_rog@p5080A234.dip0.t-ipconnect.de] has left #scheme 20:49:26 prael [n=martin@72.159.59.202] has joined #scheme 20:53:28 -!- jao [n=jao@21.Red-83-43-33.dynamicIP.rima-tde.net] has quit [Remote closed the connection] 21:02:53 mario-goulart [n=user@200-203-57-143.pltce701.dsl.brasiltelecom.net.br] has joined #scheme 21:06:45 mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #scheme 21:06:51 having a problem with backtraces in plt-scheme... 21:08:16 sometimes it stops um... tracing back. It has something to do with if the module is compiled or not. 21:08:24 Sometimes it'll just say "(something:procedure input)" is where the error is, but in reality it's write-bytes inside a procedure in another module that something.ss imports and calls in something:procedure. 21:09:20 It also doesn't trace back into planet modules, except a few times I can't explain. I rarel ever get a reference to a file in ~/.plt-scheme/planet/.../cache/... in a backtrace. 21:09:27 *rarely 21:10:33 -!- araujo [n=araujo@gentoo/developer/araujo] has quit ["Leaving"] 21:13:13 nothingHappens [n=nothingH@173-25-176-111.client.mchsi.com] has joined #scheme 21:21:39 chupish [n=951c03d5@baconfile.com] has joined #scheme 21:23:40 -!- chupish [n=951c03d5@baconfile.com] has quit [Client Quit] 21:28:36 segoe [i=3e164621@gateway/web/freenode/x-nftwpumoujekzbgj] has joined #scheme 21:28:37 hi 21:30:18 -!- bombshelter13_ [n=bombshel@toronto-gw.adsl.erx01.mtlcnds.ext.distributel.net] has quit [] 21:31:20 -!- langmartin [n=user@exeuntcha.tva.gov] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 21:31:27 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 21:34:57 -!- saccade_ [n=saccade@dhcp-18-188-74-28.dyn.mit.edu] has quit ["This computer has gone to sleep"] 21:37:56 -!- alaricsp [n=alaricsp@88-202-202-24.rdns.as8401.net] has quit ["Leaving."] 21:39:03 -!- schmir [n=schmir@mail.brainbot.com] has quit [Remote closed the connection] 21:45:18 leppie: And you're actually wondering how that ... thing is more popular than a Scheme implementation? 21:49:40 dysinger [n=dysinger@gprsinternet01.porta.net] has joined #scheme 21:49:52 -!- segoe [i=3e164621@gateway/web/freenode/x-nftwpumoujekzbgj] has quit ["Page closed"] 21:53:00 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 21:53:44 `Peter [n=pk@188-23-11-237.adsl.highway.telekom.at] has joined #scheme 22:03:18 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Remote closed the connection] 22:10:50 RageOfThou [i=RageOfTh@SE400.PPPoE-6439.sa.bih.net.ba] has joined #scheme 22:12:07 arcfide [n=arcfide@99.50.230.208] has joined #scheme 22:15:35 -!- MrFahrenheit [i=RageOfTh@89.146.168.4] has quit [Read error: 60 (Operation timed out)] 22:15:39 -!- Edico [n=Edico@unaffiliated/edico] has quit ["Leaving"] 22:18:14 -!- dysinger [n=dysinger@gprsinternet01.porta.net] has quit [Remote closed the connection] 22:19:32 a scheme implementation still in the planning stages, totally dependent on a Microsoft generated standard. 22:20:35 I mean, not that some people won't like it, but very limited usefulness and not very ubiquitous. 22:24:45 Hello #scheme, Another naming poll. 22:25:06 The getproto*() family of functions. What should I name their Scheme counterparts? 22:25:22 Should I directly translate their names over, or give them ones that make a little more sense for what they are doing? 22:25:56 'get-protocol-entry' seems alright, but misses the fact that this is more like a 'next-protocol-entry' function. 22:26:12 'end-protocol-entry' seems more like 'close-protocol-db-connection'. 22:26:33 'set-protocol-entry' seems more like 'open-protocol-db'. 22:26:40 Any suggestions? 22:27:12 direct translation. 22:27:17 Not even `protocol'. 22:27:44 You get a huge advantage in docs, man pages, and random googles. 22:28:00 eli: Would you split these procedure into their own library, or keep them with a sockets library? 22:28:17 eli: Would you do 'get-proto-entry' or 'getprotoent'? 22:28:27 Are these straight wrappers, or friendly high-level wrappers? 22:28:38 For the first question I don't know. I never used them. 22:28:45 chandler: They perform obvious datatype conversion, but other than that...not much more. 22:28:55 For the second question I'd go with translating `_'s to `-'s at most. 22:29:06 eli: They don't have any underscores. 22:29:19 So `getprotoent'. 22:29:24 chandler: So, the protoent structure would correspond to a scheme record like protoent. 22:29:45 And re chandler's question, you can then wrap these in a more Schemeish functions and function names. 22:29:58 chandler: Additionally, things like protocol numbers would be wrapped in a record container which would identify it as a protocol number. 22:30:07 Even if some of these schemeish definitions are (define foo-bar foobar) 22:30:28 eli: I think I'll go with dual naming, but I don't plan to expose the raw FFI functions that return pointers. 22:31:28 chandler: Would you split these procedure into their own library? 22:32:46 Fwiw, I would make them a separate lib. 22:32:50 I would favor having a low level library that conceptually works at the same level as C, and a high level library that provides friendly wrappers. For instance, I don't think getprotoent has any place in the latter library under any name. 22:34:20 chandler: Well, this is a direct BSD sockets translation, more or less, so there isn't any wrapping with high level stuff going on, like say, easing the create of listen/accept loops or the like. 22:34:35 s/create/creation/ 22:35:14 s/create/creat/ :-) 22:36:12 If it is a direct translations, then the names should be the same as what they are translating. If you think the UNIX names are ugly (who doesn't?), a separate library which provides access to the same functions with more legible names wouldn't be a bad idea. 22:36:19 s/translations/translation/ 22:38:16 chandler: Um...I'm not sure I want that much of a direct translation... :-/ 22:38:17 Hehe. 22:38:58 I want the overall workflow to be similiar, but I'm not sure I want the whole thing to end up looking like S-expression C code. 22:39:27 Yet one that's direct enough to provide a wrapper for getprotoent, instead of a higher level function like `map-protocol-database-entries'? 22:39:58 chandler: Yes. 22:40:20 Er, well, knock yourself out. :-) 22:40:28 chandler: Originally I was just going to provide "get-protocol-entry-by-name'. 22:41:04 chandler: Not that I wouldn't like 'map-protocol-database-entries'. 22:41:26 Maybe I will have to end up dual-naming everything. 22:48:26 -!- foof [n=user@dn157-046.naist.jp] has quit [Remote closed the connection] 22:48:29 foof [n=user@dn157-046.naist.jp] has joined #scheme 22:48:31 -!- hkBst [n=hkBst@gentoo/developer/hkbst] has quit [Read error: 104 (Connection reset by peer)] 22:51:12 -!- tabe [n=user@adel.fixedpoint.jp] has quit [Remote closed the connection] 22:52:14 -!- athos [n=philipp@92.250.250.68] has quit [Remote closed the connection] 22:55:29 tabe [n=user@adel.fixedpoint.jp] has joined #scheme 22:57:30 -!- felipe [n=felipe@my.nada.kth.se] has quit [Client Quit] 22:58:46 athos [n=philipp@92.250.250.68] has joined #scheme 23:11:41 -!- bweaver [n=user@c-68-60-0-190.hsd1.tn.comcast.net] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 23:18:22 -!- stepnem [n=stepnem@topol.nat.praha12.net] has quit [Excess Flood] 23:19:54 stepnem [n=stepnem@topol.nat.praha12.net] has joined #scheme 23:23:30 -!- jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Read error: 113 (No route to host)] 23:30:53 felipe [n=felipe@my.nada.kth.se] has joined #scheme 23:37:07 rouslan [n=Rouslan@pool-64-222-181-252.man.east.myfairpoint.net] has joined #scheme 23:43:36 -!- mmc [n=mima@cs162149.pp.htv.fi] has quit ["Leaving."] 23:45:06 -!- `Peter [n=pk@188-23-11-237.adsl.highway.telekom.at] has quit [Read error: 110 (Connection timed out)] 23:45:33 -!- Phaze [n=PhazeDK@0x5da32b16.cpe.ge-0-1-0-1104.soebnqu1.customer.tele.dk] has quit ["Leaving"] 23:47:46 antoszka_ [n=antoszka@unaffiliated/antoszka] has joined #scheme 23:49:02 -!- antoszka [n=antoszka@unaffiliated/antoszka] has quit [Read error: 104 (Connection reset by peer)] 23:57:35 -!- tabe [n=user@adel.fixedpoint.jp] has quit [Remote closed the connection]