00:00:15 I fail to see how. 00:00:15 (begin . definitions) is a different thing from (begin definition ... expression ...) 00:00:29 -!- Nshag [user@lns-bzn-37-82-253-43-245.adsl.proxad.net] has quit [Ping timeout: 245 seconds] 00:00:30 At the top level? 00:00:33 Yes. 00:00:48 I fail to see how. 00:01:17 Is the `foo' in (define-syntax bar (syntax-rules () (begin (define foo 1) (set! baz (lambda () foo))))) an introduced name? 00:01:19 Because (begin . defs) is the same as defs; the begin is not a scope. 00:01:39 -!- bweaver [~user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 00:01:58 In that case, clearly yes; that is of the form (begin definition ... expression ...) 00:02:18 Is the `foo' in (define-syntax bar (syntax-rules () (begin (define foo 1) (define baz (lambda () foo))))) an introduced name? 00:02:20 define-record-type should just signal an error (possibly not until runtime) if any fields have the same symbol name. 00:02:22 Chicken is indeed buggy in that respsect. 00:04:49 (BTW, I'm assuming that "((bar) ...) is implied around all these begins. 00:05:25 In your most recent cae, foo and baz are not introduced names, I believe. 00:06:16 case, even 00:07:13 I don't understand what you mean by ((bar) ...) 00:08:01 Individual syntax rules are of the form (pattern expansion), but yours do not appear to be so: the (begin . body) is in the pattern. 00:08:10 chandler: Your syntax was wrong. 00:08:19 Sorry. Perils of trying to code at an IRC input line. 00:08:25 (define-syntax bar (syntax-rules () ((bar) (begin (define foo 1) (define baz (lambda () foo)))))) 00:08:30 Exactly. 00:08:36 I thought jcowan was referring to where the syntax was used, and was confused. 00:09:00 I'm not sure I understand your reasoning about when `define' acts as a binding form. 00:09:34 Suppose now that I write: (define-syntax bar (syntax-rules () ((_) (begin (define foo 1) (baz foo)))) . Is `foo' an introduced name? 00:09:38 I'm not telling you what `baz' is yet. 00:10:16 (By the way, Felix would dispute that Chicken is buggy in this regard; this behavior is by design.) 00:10:29 -!- wingo [~wingo@81.38.185.122] has quit [Ping timeout: 245 seconds] 00:12:48 On the theory that all top-level defines merely assign? 00:13:14 -!- fabe [~fabe@p54A7ECF6.dip.t-dialin.net] has quit [Remote host closed the connection] 00:13:34 Yes. 00:14:24 I could never decide if that was a bug or not myself. 00:14:51 Well, R5RS clearly permits either interpretation. 00:15:26 The R5RS is not infallible. It is wrong to permit Chicken's interpretation. 00:17:34 My own position is that the assignment behavior of `define' is utterly broken, and should be dispensed with. `define' should be consistently treated as a binding form in all contexts. `begin' should be consistently treated as an aggregator of bindings (some of them with unique names, in the case of expressions) in all contexts. This is the only behavior that provides any degree of sanity for macro authors. I'm not hopeful that I could ... 00:17:40 ... convince anyone else to adopt this view, however. 00:18:16 *jcowan* notes that in fact (define (y) (begin (define x 32) x)) is forbidden by R5RS, although allowed by Chicken. 00:18:52 And nobody could argue that the (define x 32) is not a binding form, not even Chicken. 00:19:56 Gambit and Chibi swallow that too, whereas Guile and scsh adhere to the R5RS here. 00:21:16 I couldn't think of a good reason to forbid that, and it just requires extra code to check for it. 00:21:43 I would actually prefer to permit that, as well as (let ((f (lambda (x) x))) (f (begin (define y 1) y))) . I would expect this to be controversial as well. 00:22:17 -!- pavelludiq [~quassel@91.139.194.233] has quit [Read error: Connection reset by peer] 00:23:58 Gambit will not swallow that, but Chicken and Chibi continue to be happy. 00:24:51 However, I do not think begin can be treated as nothing but an aggregator of bindings, because it has to return a value if there's one to return. 00:24:58 Really? I need to fix that. 00:26:05 *jcowan* also notes that R5RS doesn't explicitly license (begin . definitions) at the top level, only internally. 00:26:54 IOW, it is not all one whether you write (begin (define x 1) y) or (begin (define x 1) (define scooby-doo y)). 00:27:50 That's news to me. 00:27:55 "At the top level of a program (begin ...) is equivalent to the sequence of expressions, definitions, and syntax definitions that form the body of the begin." 00:28:00 At other than the top level, I mean. 00:28:16 I'm afraid you've confused me again. 00:28:49 No, I am the one who is confused. 00:28:55 Erase all that. 00:29:04 Regarding `begin' as an aggregator of bindings, I would in fact prefer it if that was the case - which then implies that ((lambda () (define x 1) (define y 2))) -> 2, I suppose. 00:29:29 Oh, if you are willing to swallow that, then quite so. 00:29:42 So begin does not merely aggregate bindings; it also returns the value of the last binding. 00:29:59 saccade_ [~saccade@209-6-54-113.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 00:30:15 Sgeo_ [~Sgeo@ool-18bf618a.dyn.optonline.net] has joined #scheme 00:30:15 Whatever receives the bindings does that. 00:30:19 In this case, it is `lambda'. 00:30:30 -!- Sgeo_ [~Sgeo@ool-18bf618a.dyn.optonline.net] has quit [Read error: Connection reset by peer] 00:31:02 However, lambda and begin don't have the same syntax: lambda takes a body, whereas begin does not. 00:31:28 What's your definition of "a body"? 00:31:55 "a (that is, the body of a lambda, let, let*, letrec, let-syntax, or letrec-syntax expression or that of a definition of an appropriate form)" 00:32:05 okay, that's technically recursive, but that's the point. 00:32:44 begin is defined as (begin expr1 expr2 ...); no definitions are allowed, *unless* it is a top-level-begin or a begin in the definition area of a body. 00:32:58 So there are three different begins with three different syntaxes. 00:33:49 -!- Sgeo [~Sgeo@ool-18bf618a.dyn.optonline.net] has quit [Ping timeout: 245 seconds] 00:34:00 Right. I dislike this situation immensely. `begin' should denote one concept, and the concept I am proposing is (I believe) a superset of what the R5RS describes as a , and close to what the R6RS concept of a program top level. 00:34:18 I'm sure that wasn't clear, now that I read it. 00:34:34 What `begin' should accept is a superset of what the R5RS describes as a . 00:34:52 In other words, if (begin 3 (define x 4) x) is allowed in one context, it should be allowed in all contexts. 00:35:13 What is the scope of x in that context? 00:35:18 s/context/expression 00:36:28 The scope is determined by whatever receives the bindings returned by `begin'. My internal mental model is of multiple syntactic return values, each denoting a binding. 00:36:38 I'll be back in a few minutes. 00:37:24 I mean, does (begin x (define x 1) (define y 2)) return 1, 2, or the value bound to x outside the begin-expression? 00:38:26 It returns 2. The value of the first expression in the `begin' is 1. 00:38:58 I believe that form should be the same as (begin (define x) (define x 1) (define y 2)) . 00:39:03 Thanks. I need to go home. 00:39:09 -!- jcowan [~jcowan@nat/google/x-jdxldretzulhporw] has quit [Quit: Leaving] 00:39:25 _JFT_ [~JFT@modemcable204.87-177-173.mc.videotron.ca] has joined #scheme 00:40:29 Obviously, this idea is quite radical, but I so far haven't found another way to ensure that `define' and `begin' always mean the same thing. 00:41:10 -!- phao [~phao@189.107.207.145] has quit [Quit: Leaving] 00:50:04 drwho [~drwho@c-71-225-11-30.hsd1.pa.comcast.net] has joined #scheme 00:52:08 -!- kniu [~kniu@HOHOHO.RES.CMU.EDU] has quit [Remote host closed the connection] 00:52:15 -!- _JFT_ [~JFT@modemcable204.87-177-173.mc.videotron.ca] has quit [Quit: _JFT_] 00:55:48 -!- fradgers- [~fradgers-@5ad4c06e.bb.sky.com] has left #scheme 00:59:54 bokr [~eduska@95.154.102.124] has joined #scheme 01:09:37 -!- alexsuraci_ [~alexsurac@32.170.97.189] has quit [Quit: alexsuraci_] 01:13:52 -!- Adamant [~Adamant@unaffiliated/adamant] has quit [Ping timeout: 256 seconds] 01:20:59 -!- offby1 [~user@q-static-138-125.avvanta.com] has quit [Read error: Connection reset by peer] 01:22:27 -!- saint_cypher [~saint_cyp@adsl-99-2-72-93.dsl.pltn13.sbcglobal.net] has quit [Ping timeout: 252 seconds] 01:27:09 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme 01:33:14 sepult` [~user@xdsl-87-78-172-115.netcologne.de] has joined #scheme 01:35:39 -!- sepult [~user@xdsl-78-35-210-94.netcologne.de] has quit [Ping timeout: 240 seconds] 01:36:41 scheibo [~scheibo@129-97-249-119.uwaterloo.ca] has joined #scheme 01:47:46 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: Leaving] 01:51:57 jcowan [~jcowan@cpe-98-14-172-204.nyc.res.rr.com] has joined #scheme 02:01:54 -!- Maxel [~Maxel@97-90-238-123.dhcp.eucl.wi.charter.com] has quit [Ping timeout: 276 seconds] 02:02:19 -!- foof [~user@FL1-118-110-11-244.osk.mesh.ad.jp] has quit [Ping timeout: 265 seconds] 02:06:27 Owner_ [~ae66d3ce@gateway/web/freenode/x-zfvcdokgkkuqwbjx] has joined #scheme 02:08:52 -!- metasyntax [~taylor@pool-71-127-125-129.aubnin.fios.verizon.net] has quit [Quit: Be seeing you.] 02:09:32 -!- virl [~virl__@chello062178085149.1.12.vie.surfer.at] has quit [Remote host closed the connection] 02:14:45 -!- mejja [~user@c-68b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.0.14/2009090900]] 02:18:55 -!- mario-goulart [~user@67.205.85.241] has quit [Remote host closed the connection] 02:28:25 fda314925 [~fda314925@121.124.124.117] has joined #scheme 02:38:10 offby1 [~user@pdpc/supporter/monthlybyte/offby1] has joined #scheme 02:39:48 -!- jonrafkind [~jon@c-98-202-82-46.hsd1.ut.comcast.net] has quit [Read error: Operation timed out] 02:40:34 ziggurat [~quassel@pool-173-71-25-61.dllstx.fios.verizon.net] has joined #scheme 02:45:04 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 02:46:59 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 02:54:58 jonrafkind [~jon@c-98-202-82-46.hsd1.ut.comcast.net] has joined #scheme 02:56:36 -!- Owner_ [~ae66d3ce@gateway/web/freenode/x-zfvcdokgkkuqwbjx] has quit [Quit: Page closed] 02:57:25 Owner_ [~ae66d3ce@gateway/web/freenode/x-rsuyiflbrxhzkfcs] has joined #scheme 02:57:58 kniu [~kniu@HOHOHO.RES.CMU.EDU] has joined #scheme 03:11:58 -!- KatieHuber is now known as KatieHuber|away 03:13:34 -!- MrFahrenheit [~RageOfTho@users-55-240.vinet.ba] has quit [Ping timeout: 264 seconds] 03:19:38 Guvmint done stole an hour of sleep from me 03:26:03 bombshelter13b [~bombshelt@76-10-149-209.dsl.teksavvy.com] has joined #scheme 03:27:28 -!- xwl_ [~user@esprx01x.nokia.com] has quit [Remote host closed the connection] 03:28:15 xwl_ [~user@esprx01x.nokia.com] has joined #scheme 03:32:03 dey done did dat 03:32:05 ayup 03:36:10 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has left #scheme 03:42:47 *Daemmerung* spits 03:42:47 also, s/Guvmint/Gubmint 03:42:49 foof [~user@FL1-118-110-11-244.osk.mesh.ad.jp] has joined #scheme 03:43:37 -!- adiabatic [~adiabatic@dsl-206-55-130-248.tstonramp.com] has quit [Quit: Rockin music will set you free.] 03:45:12 or "Gummint". 03:45:19 I learned how to spell from "Pogo" 03:52:52 timj__ [~timj@e176213159.adsl.alicedsl.de] has joined #scheme 03:53:12 -!- Modius [~Modius@cpe-70-123-130-159.austin.res.rr.com] has quit [Read error: Connection reset by peer] 03:53:49 Modius [~Modius@cpe-70-123-130-159.austin.res.rr.com] has joined #scheme 03:55:28 -!- bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [Quit: leaving] 03:55:54 -!- timj_ [~timj@e176223100.adsl.alicedsl.de] has quit [Ping timeout: 252 seconds] 03:58:07 -!- Mr_Awesome [~eric@c-98-212-139-181.hsd1.il.comcast.net] has quit [Read error: Connection reset by peer] 04:01:36 -!- sepult` [~user@xdsl-87-78-172-115.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 04:02:00 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 04:07:05 ribbs [~ribbs@p024062.doubleroute.jp] has joined #scheme 04:07:20 Daemmeru` [~goetter@1133sae.mazama.net] has joined #scheme 04:07:20 -!- Fabse [~mightyfid@wikipedia/Track-n-Field] has quit [] 04:13:19 -!- Daemmerung [~goetter@1133sae.mazama.net] has quit [Ping timeout: 265 seconds] 04:20:02 -!- Daemmeru` is now known as Daemmerung 04:21:14 Mr_Awesome [~eric@c-98-212-139-181.hsd1.il.comcast.net] has joined #scheme 04:26:19 -!- Owner_ [~ae66d3ce@gateway/web/freenode/x-rsuyiflbrxhzkfcs] has left #scheme 04:34:33 elf [elf@antenora.aculei.net] has joined #scheme 04:41:25 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 04:47:53 -!- jcowan [~jcowan@cpe-98-14-172-204.nyc.res.rr.com] has left #scheme 04:56:51 sepult [~user@xdsl-87-78-172-115.netcologne.de] has joined #scheme 05:14:26 MichaelRaskin [~MichaelRa@pantagruel.mccme.ru] has joined #scheme 05:25:49 -!- eno [~eno@nslu2-linux/eno] has quit [Ping timeout: 276 seconds] 05:26:53 eno [~eno@nslu2-linux/eno] has joined #scheme 05:35:00 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Remote host closed the connection] 05:43:36 myu2 [~myu2@161.90.128.210.bf.2iij.net] has joined #scheme 05:44:12 pavelludiq [~quassel@91.139.194.233] has joined #scheme 05:54:05 -!- sepult [~user@xdsl-87-78-172-115.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 05:59:28 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 06:02:56 -!- parolang [~user@8e4a01246100775874c4f448e9887093.oregonrd-wifi-1261.amplex.net] has quit [Remote host closed the connection] 06:11:24 -!- TR2N [email@89-180-137-177.net.novis.pt] has left #scheme 06:21:52 adu [~ajr@pool-74-96-89-29.washdc.fios.verizon.net] has joined #scheme 06:27:59 -!- eno [~eno@nslu2-linux/eno] has quit [Read error: Connection reset by peer] 06:28:02 -!- KatieHuber|away is now known as KatieHuber 06:33:00 eno [~eno@nslu2-linux/eno] has joined #scheme 06:36:22 -!- yosafbridge [~yosafbrid@li14-39.members.linode.com] has quit [Ping timeout: 264 seconds] 06:36:51 -!- rapacity [~prwg@unaffiliated/rapacity] has quit [Ping timeout: 276 seconds] 06:38:26 rapacity [~prwg@li30-188.members.linode.com] has joined #scheme 06:40:47 -!- xwl_ [~user@esprx01x.nokia.com] has quit [Remote host closed the connection] 06:43:46 yosafbridge [~yosafbrid@li14-39.members.linode.com] has joined #scheme 06:46:01 attila_lendvai [~ati@4d6f5d3b.adsl.enternet.hu] has joined #scheme 06:52:31 xwl_ [~user@esprx01x.nokia.com] has joined #scheme 07:10:01 hkBst [~hkBst@gentoo/developer/hkbst] has joined #scheme 07:17:04 -!- toekutr [~toekutr@adsl-69-107-143-127.dsl.pltn13.pacbell.net] has quit [Quit: Leaving] 07:26:38 kar8nga [~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net] has joined #scheme 07:27:21 -!- kar8nga [~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net] has quit [Remote host closed the connection] 07:36:22 -!- jonrafkind [~jon@c-98-202-82-46.hsd1.ut.comcast.net] has quit [Ping timeout: 258 seconds] 07:36:27 -!- mbohun [~mbohun@202.124.75.121] has quit [Ping timeout: 252 seconds] 07:42:17 hkBst_ [~hkBst@gentoo/developer/hkbst] has joined #scheme 07:42:25 -!- adu [~ajr@pool-74-96-89-29.washdc.fios.verizon.net] has quit [Quit: adu] 07:43:31 -!- hkBst [~hkBst@gentoo/developer/hkbst] has quit [Ping timeout: 245 seconds] 08:07:02 -!- bombshelter13b [~bombshelt@76-10-149-209.dsl.teksavvy.com] has quit [Quit: If only your veins were filled with oil, the world would rush to your rescue!] 08:08:21 -!- arrummzen [~arrummzen@ip68-5-249-130.oc.oc.cox.net] has quit [Ping timeout: 252 seconds] 08:09:52 wingo [~wingo@81.38.185.122] has joined #scheme 08:19:02 pchrist [~spirit@gentoo/developer/pchrist] has joined #scheme 08:24:06 -!- KatieHuber [~katie@cmiller.xen.prgmr.com] has quit [Ping timeout: 276 seconds] 08:25:11 arrummzen [~arrummzen@ip68-5-249-130.oc.oc.cox.net] has joined #scheme 08:31:19 -!- wingo [~wingo@81.38.185.122] has quit [Ping timeout: 245 seconds] 08:31:29 masm [~masm@bl7-197-245.dsl.telepac.pt] has joined #scheme 08:38:55 phao [~phao@189.107.136.5] has joined #scheme 08:40:00 -!- pavelludiq [~quassel@91.139.194.233] has quit [Read error: Operation timed out] 08:41:19 pavelludiq [~quassel@91.139.194.233] has joined #scheme 08:44:40 -!- stepnem [~stepnem@88.103.132.186] has quit [Max SendQ exceeded] 08:44:55 stepnem [~stepnem@88.103.132.186] has joined #scheme 09:00:42 -!- foof [~user@FL1-118-110-11-244.osk.mesh.ad.jp] has quit [Ping timeout: 258 seconds] 09:17:41 -!- hkBst_ [~hkBst@gentoo/developer/hkbst] has quit [Ping timeout: 245 seconds] 09:20:13 -!- NNshag [user@lns-bzn-24-82-64-156-113.adsl.proxad.net] has quit [Quit: Quitte] 09:21:48 adiabatic [~adiabatic@dsl-206-55-130-248.tstonramp.com] has joined #scheme 09:24:50 KatieHuber|away [~katie@cmiller.xen.prgmr.com] has joined #scheme 09:25:15 -!- KatieHuber|away is now known as KatieHuber 09:30:32 fradgers- [~fradgers-@5ad4c06e.bb.sky.com] has joined #scheme 09:31:29 hkBst_ [~hkBst@gentoo/developer/hkbst] has joined #scheme 09:43:42 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 09:43:52 ironChick` [~richard@158.223.51.84] has joined #scheme 09:44:14 -!- phao [~phao@189.107.136.5] has quit [Ping timeout: 245 seconds] 09:44:41 virl [~virl__@chello062178085149.1.12.vie.surfer.at] has joined #scheme 09:50:33 -!- ironChicken [~nnnnnnric@mx.lurk.org] has quit [Quit: Terminated with extreme prejudice - dircproxy 1.0.5] 09:56:44 phao [~phao@189.107.131.194] has joined #scheme 09:58:05 -!- ironChick` [~richard@158.223.51.84] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 09:58:42 ironChicken [~richard@mx.slab.org] has joined #scheme 10:02:04 -!- PygoscelisPapua [~pygospa@f055171164.adsl.alicedsl.de] has quit [Ping timeout: 276 seconds] 10:03:12 PygoscelisPapua [~pygospa@f050137209.adsl.alicedsl.de] has joined #scheme 10:04:05 -!- xwl_ [~user@esprx01x.nokia.com] has quit [Remote host closed the connection] 10:04:39 xwl_ [~user@esprx01x.nokia.com] has joined #scheme 10:09:00 -!- drwho [~drwho@c-71-225-11-30.hsd1.pa.comcast.net] has quit [Quit: A known mistake is better than an unknown truth.] 10:10:02 -!- jmcphers [~jmcphers@218.185.108.156] has quit [Remote host closed the connection] 10:13:09 -!- ironChicken [~richard@mx.slab.org] has quit [Quit: Terminated with extreme prejudice - dircproxy 1.0.5] 10:16:34 http://dpaste.com/172446//plain/ 10:16:38 could someone help me with that code? 10:16:45 rstandy [~rastandy@net-93-144-16-65.t2.dsl.vodafone.it] has joined #scheme 10:17:19 My issue is this: I have these functions 10:17:38 (first) and (second). They should get a quote, see if it's a pair 10:18:02 if it's not, return the quote, if it's, they should get the operation in that quote (operation) 10:18:10 and apply it to its first and second. 10:18:33 and they don't quite look at the entire quote 10:18:33 phao: funny, I was just playing with the same example yesterday 10:18:37 in first you do a car first before you even check if it is a pair 10:19:01 good point. 10:19:14 or I don't get how you hand it in 10:19:23 I assume it's (first '( 1 . 2)) 10:19:31 melba [~blee@unaffiliated/lazz0] has joined #scheme 10:20:31 you don't obey the first commandment :) Always ask null? As the first question in expressing 10:20:34 an function. 10:20:35 :) 10:20:41 :) 10:20:58 -!- rapacity [~prwg@li30-188.members.linode.com] has quit [Changing host] 10:20:58 rapacity [~prwg@unaffiliated/rapacity] has joined #scheme 10:21:33 the problem I'm having has nothing to do with that afaik. 10:21:46 I should get (make-sum 1 1) if the quote is (1 + 1) 10:21:50 and I'm getting (1 + +) 10:21:54 ops 10:21:56 I'm getting 10:22:01 (make-sum 1 '+) 10:22:27 well, you say (else (list a '+ b)))) 10:22:36 which does exactly that 10:22:49 well, the point is that 10:23:02 in a quote '(1 + 1) 10:23:09 the first is 1, second is 1. 10:23:17 and since the first is the car and the second is the caddr 10:23:24 then my program should be generating (make-sum 1 1) 10:23:30 and not (make-sum 1 '+) 10:23:31 ah ok 10:24:13 http://dpaste.com/172449//plain/ <= check for pairs in this one 10:24:24 still your definition of first makes no sense to me then 10:24:34 why? 10:24:57 ah wait 10:26:11 hmm 10:26:15 I'm just seeing something 10:26:22 I don't need to check for pairs as you said 10:26:38 I am lost, where do you expect to get that makesum line? 10:26:46 (operation exp) 10:26:58 should return the procedure that the quote refers to 10:27:02 if it's a sum, it returns make-sum 10:27:08 ... product, ... make-product 10:27:09 ... 10:30:02 why do you start with the difficult example when (first '(1 + 1)) won't work? 10:30:24 won't it? 10:30:34 eval it on paper 10:30:37 it does here. 10:30:41 it returns me 1. 10:31:42 and I did it on paper I think 3 or 4 times. 10:31:47 it looks correct. 10:33:28 I've changed it to something more readable imo 10:33:38 http://dpaste.com/172453//plain/ 10:33:42 maybe you prefer using this one 10:39:05 hmmmmmm 10:39:07 strange!!! 10:39:11 it works in mit-scheme 10:39:24 (note: I was using mzscheme) 10:41:05 can it be a bug in mzscheme? 10:43:16 alvatar [~alvatar@143.119.20.95.dynamic.jazztel.es] has joined #scheme 10:43:49 foof [~user@FL1-118-110-11-244.osk.mesh.ad.jp] has joined #scheme 10:47:02 well 10:47:07 I've reported a bug to mzscheme 10:47:13 I hope I'm not wrong :-) 10:47:48 what's your input, which output do you expect and what's mzscheme's output? 10:48:41 mzscheme's output is: ((3 + +) + +) 10:48:44 I expect: 7 10:48:57 input is: '(x + ((3 + (2 + 1)) + 1)) 10:49:04 I run (first e) 10:49:07 and e is input. 10:49:16 ops 10:49:17 ops 10:49:26 (second e) 10:49:26 hehe 10:51:57 be more precise. Where's the bug? 10:52:23 good question. 10:52:31 I only know it's giving an output it should give. 10:52:41 ops 10:52:47 it shouldn't* 10:53:34 and you expect people to debug your whole program to find a bug in a well tested scheme implementation? 10:53:43 -!- ribbs [~ribbs@p024062.doubleroute.jp] has quit [Quit: Leaving...] 10:53:54 that's unlikely the case 10:54:45 and.. ? 10:56:01 pmd [~user@mail2.siscog.pt] has joined #scheme 10:56:18 phao: Whittle it down to a tiny case which demonstrates the bug clearly 10:56:23 -!- pmd [~user@mail2.siscog.pt] has left #scheme 10:56:47 honestly... that is a considerable small case that the bug happens 10:56:51 Often in doing so you find out the exact procedure which is doing it wrong 10:57:02 Or a bug in your program, for that matter :) 10:57:07 yes 10:57:11 the bug may be in my program. 10:57:18 What is considerably small? 10:57:18 but then, I'd have to report a bug in mit-scheme 10:57:25 Your paste is a huge program 10:57:27 because it gives me the result I expect. 10:57:41 this input is considerable small '(x + ((3 + (2 + 1)) + 1)) 10:57:52 Sure, but the program is large 10:57:58 oh yes 10:58:01 It shouldn't be more than 10 lines 10:58:07 Preferably less 10:58:20 the fact is that its late now. I've already reported 10:58:22 If it really is a bug in mit scheme, then you should be able to demonstrate it with a smaller program 10:58:25 but the code that 10:58:30 That's okay, you can annotate your bugreport 10:58:31 I told them that is buggy is the one 10:58:35 The maintainers will appreciate it 10:58:38 related to the procedures (first) and (second) 10:58:44 they don't need to look at the rest of the file. 10:59:31 note that the bug is in mzscheme. 10:59:39 mit-scheme gives me the expected results 10:59:42 mzscheme does not. 10:59:45 But what is the bug? 10:59:55 can you point your finger at the s-expression that does the wrong thing? 10:59:56 Does it not apply operation correctly? 11:00:04 Does it not take the car correctly? 11:00:15 Does pair? say #t where it shouldn't? 11:00:22 C-Keen, with sureness? no. But I'm almost sure that it's the part of the procedures first and second 11:00:27 that is the recursive one 11:00:29 Really, you should be able to make it as short as that 11:00:46 phao: that's the first step. try to find the sexpression that does not do what you expect 11:00:50 You should really make it so simple to say: this core procedure goes wrong on this input 11:01:00 Not: here's my program, it breaks. Please help me 11:01:10 I didn't do any of those. 11:01:22 You did 11:01:28 How do you know? 11:01:35 Like you said, they only have to look at two procedures 11:01:35 you didn't look at the bug report. 11:01:46 Then you should've put only those procedures in the bugreport 11:01:52 why? 11:01:56 that makes even less sense 11:02:00 Idon't know where the bug is. 11:02:06 Because the rest is unrelated to the bug, according to you 11:02:08 Ah! 11:02:08 maybe it's a bug on the part of mzscheme 11:02:12 that 11:02:16 loads the file 11:02:21 If you don't know where the bug is, you should try to find out where it is 11:02:24 maybe it's doing something wrong because of other parts of the code. 11:02:34 I'm not going to read mzscheme's source to find a bug dude. 11:02:43 Prod and poke it until you find out where exactly it goes wrong 11:02:47 you should read your own code to find the bug 11:02:49 You don't have to look at mzscheme's source 11:02:57 But you should pinpoint where in your code it goes wrong 11:03:08 there is a line in my code 11:03:12 (display (second e)) 11:03:15 it's the only display line 11:03:18 and it outputs the wrong answer. 11:03:24 Okay, that's a start 11:03:25 the problem is in second 11:03:29 second has only 4 lines 11:03:33 ok, that is less than 10 lines. 11:03:37 satisfied? 11:03:38 Jafet [~Jafet@unaffiliated/jafet] has joined #scheme 11:03:46 Can you reproduce it by calling second on an example input? 11:03:52 tbh I think second has 5 lines. 11:03:56 If not, the bug is elsewhere 11:04:09 [08:44] Can you reproduce it by calling second on an example input? 11:04:11 I didn't understand this. 11:04:26 phao: open a REPL and type (second 'whatever) to trigger the bug 11:04:32 If you evaluate the definition of SECOND in mzscheme, and then type in (second ....), can you get the bug? 11:04:34 (after loading the file) 11:05:15 C-Keen: I'd skip loading the file and only paste the relevant definitions in the REPL to eliminate interaction with other parts in the code 11:05:22 (load "e2.58.ss") 11:05:22 ((3 * *) + +)> 11:05:22 (second e) 11:05:22 ((3 * *) + +) 11:05:49 phao: Ok, so what do you think it is doing here? 11:05:55 phao: What does e look like if you replace (display (second e)) with (display e) (Just to make sure you haven't somehow mutated e so that second gets confused)? 11:05:56 no clue. 11:06:01 Which path in your code does it take? 11:06:22 it gets the operation of the expression, then it gets its first and second part 11:06:27 after that apply the operation to those parts. 11:06:29 Does it? 11:06:30 the POINT is that 11:06:35 if I do it outside the procedure 11:06:37 Or does it follow the else branch of the IF? 11:06:37 it works. 11:06:39 it I do this 11:06:47 ... 11:06:51 ((operation (caddr e)) ...) 11:06:53 it gets me 7 11:06:55 ops 11:06:56 not 7 11:07:00 but the correct output. 11:07:04 phao: Check what branch of the if it is following 11:07:31 For example, (if (pair? s) 11:07:38 > (display e) 11:07:38 (x * ((3 * (2 + 1)) + 1)) 11:07:47 (begin (display "first branch") ((operation s) (first s) (second s))) 11:07:49 > e 11:07:50 (x * ((3 * (2 + 1)) + 1)) 11:07:54 (begin (display "second branch") s) 11:08:03 what is (begin) ? 11:08:20 It allows you to put multiple expressions in sequence in a place where you can only put one expression 11:10:06 What does it print? 11:10:36 hi! 11:10:39 hi alvatar 11:11:13 what are the real advantages of using a "record" against defining your own selector methods for a "type"? 11:11:23 It seems that gambit is dealing with them in a different way 11:11:31 alvatar: records introduce new disjoint types 11:11:48 This means you can distinguish between a record of type and, for example, a list 11:12:00 I see 11:12:01 wait.. 11:12:08 SICP uses a kind of "label" for that 11:12:10 Also, records are often more convenient 11:12:25 Yeah, but a label isn't really opaque 11:12:26 like you have normal lists, but one of the elements is a identifier of the "type" 11:12:29 It's still a list 11:12:33 of course 11:12:35 pair? and list? will answer #t 11:12:40 so records are a different type then? 11:12:43 Each record is really its own type 11:12:43 yes 11:12:46 nice 11:12:50 Down to the core 11:12:56 Instead of bolted on :) 11:13:05 I thought they were r6rs though 11:13:08 second:cond:else:exp:(x * ((3 * (2 + 1)) + 1)) 11:13:08 first:cond:else:exp:((3 * (2 + 1)) + 1) 11:13:08 ((3 * *) + +) 11:13:18 Nah, all schemes have their own record types 11:13:22 ok 11:13:25 http://dpaste.com/172458//plain/ 11:13:27 that is the new code 11:13:30 They're often nonportable, but there's also SRFI-9 11:13:49 phao: eek! 11:13:52 I thought that everything in scheme were lists, but there are also vectors and records, as I'm discovering them 11:13:58 You're not making it easier on yourself (or us, for that matter) 11:14:08 alvatar: There are good reasons for those 11:14:16 yes of course :) 11:14:27 sjamaan, why? 11:14:51 phao: For one, you're still pasting the entire library, forcing people to scroll down and make out the one interesting function 11:15:03 And also, you're changing the entire structure of the code 11:15:06 but what if the bug 11:15:08 is in mzscheme 11:15:14 and it's not in evaluating my specific function 11:15:18 You're not debugging what you had, but writing new code 11:15:19 what if the bug is being trigerred 11:15:23 by some other part of my code 11:15:31 Exactly! 11:15:31 because of some mechanism of mzscheme that doesn't read scheme right 11:15:37 "Exactly!" 11:15:44 That's why I want you to try it out _in isolation_ first 11:15:45 that is why I think they need the entire code. 11:15:50 Debugging is a process of elimination 11:15:52 phao: a lot of assumptions, what do you do to verify those 11:15:55 You have a hypothesis. Test it! 11:16:06 C-Keen, besides reading mzscheme's source, I don't know how to . 11:16:20 phao: Forget about that. Test your hypothesis 11:16:20 my hypothesis, now 11:16:21 is that 11:16:23 phao: by running tests against your own code 11:16:27 as soon as 11:16:31 (operation exp) 11:16:35 returns, make-sum is called 11:16:46 and (first exp) isn't evaluated 11:16:50 phao: That's not the same hypothesis you posed just a minute ago 11:16:56 sjamaan, ohh 11:16:58 yes yes 11:16:59 it is not. 11:17:00 |12:14| ( phao) what if the bug is being trigerred 11:17:00 |12:14| ( phao) by some other part of my code 11:17:03 ^ test that, first 11:17:08 I don't know how to . 11:17:09 Take baby steps 11:17:17 You can test that by ripping out all other stuff 11:17:32 Make a file containing only SECOND, and the definitions it depends upon 11:17:35 lol 11:17:37 See if it still reacts the same 11:17:43 hehe, yes. didn't think of that. 11:17:54 If it does, your hypothesis is incorrect and you can move on to form a new one 11:18:11 If it doesn't, well then we can try to find out _what_ part of your code is causing the difference 11:23:57 you were right 11:24:05 it seems that expression is being modified 11:24:12 ? 11:24:22 http://dpaste.com/172464//plain/ 11:24:52 my output is 11:24:53 pff, still quite a pile of code. But better! 11:25:00 It cannot be trimmed 11:25:04 all the procedures there 11:25:09 are necessary for first and second to run 11:25:12 It can, if you stub out some of the procedures that don't matter 11:25:12 my output is: 11:25:14 second:cond:else:exp:(x * ((3 * (2 + 1)) + 1)) 11:25:15 operation:sum:exp:((3 * (2 + 1)) + 1) 11:25:15 first:cond:else:exp:((3 * (2 + 1)) + 1) 11:25:15 operation:product:exp:(3 * (2 + 1))((3 * *) + +) 11:25:15 operation:sum:exp:((3 * (2 + 1)) + 1) 11:25:15 # 11:25:21 sjamaan, they all matter. 11:25:36 this one: operation:product:exp:(3 * (2 + 1))((3 * *) + +) 11:25:49 phao: ok. do you think that operation in this case looks right? 11:26:00 even the first one? 11:26:33 the procude operation? yes, it does look right. 11:26:41 it seems that it's receiving the modified expression 11:26:42 from first. 11:26:46 -!- virl [~virl__@chello062178085149.1.12.vie.surfer.at] has quit [Remote host closed the connection] 11:26:51 so, maybe it's first that is modifying the damn thing. 11:27:26 phao: Try to reduce the input expression. Can you make it shorter? 11:27:48 Try to find exactly under what circumstances the bug is triggered 11:27:52 I can, wait.. 11:27:58 sjamaan, I think i know that 11:28:08 the bug is triggered when I pass a compound expression 11:28:09 Only when you have nesting of one deep, two deep? Or does the length of the list matter? 11:28:14 (1 + 1) works 11:28:17 Good 11:28:20 ((1 + 1) + 2) doesnt 11:28:24 Excellent! 11:28:25 let me do it 11:29:29 http://dpaste.com/172466//plain/ -- this also prints the value of s and f in second and first. 11:29:34 second:cond:else:exp:(3 * (2 + 1)):s:(2 + 1) 11:29:34 operation:sum:exp:(2 + 1) 11:29:34 first:cond:2nd:exp:(2 + 1) 11:29:34 (2 + +) 11:30:03 I'd switch to the simplified example 11:30:08 ((1 + 1) + 2) 11:30:13 It's less complicated 11:30:22 Complexity is your enemy here 11:30:34 The simpler expression will help you debug it easier 11:30:45 (2 + 1) 11:30:47 that is pair. 11:30:48 sure? 11:30:51 I mean 11:30:55 '(2 + 1) 11:31:02 try it in the repl: (pai? '(1 + 2)) 11:31:07 try it in the repl: (pair? '(1 + 2)) 11:31:18 that is the exact issue I'm in.. let me see 11:31:22 Test, test test :) 11:31:38 > (pair? '(1 + 2)) 11:31:38 #t 11:31:44 Sounds good 11:32:00 However, you keep changing your testcase 11:32:18 First it was ((1 + 1) + 2), then you switched to (2 + 1) and now it is (1 + 2) 11:32:31 Don't do that, it might put you on the wrong track 11:32:34 first:cond:2nd:exp:(2 + 1) 11:32:35 I think I confused phao sorry 11:32:36 this is annoying 11:32:49 ((not (pair? (car exp))) (begin (display "first:cond:2nd:exp:") (display exp) (newline) (car exp))) 11:33:01 nevermind 11:33:09 phao: exp != (car exp) 11:33:19 yes 11:33:23 that's what i've just seen 11:34:46 phao: Earlier you said you couldn't simplify the code, that all definitions are necessary. You just said ((1 + 1) + 2) breaks, too. You can thus remove all references to multiplication and exponentiation 11:34:57 nested second doesn't seem to get called. 11:35:00 This will simplify your code down to only first, second, and make-sum 11:35:17 oh, and number=? 11:35:22 eh, =number? 11:35:27 it's there too 11:35:30 and it's used by make-sun 11:35:34 make-sum* 11:35:38 make-... 11:35:47 What is there too? 11:36:01 I didn't understand you. 11:36:16 What part didn't you understand? 11:36:24 [09:16] What is there too? 11:36:27 there where? 11:36:30 |12:34| ( phao) it's there too 11:36:30 |12:34| ( phao) and it's used by make-sun 11:36:41 ^ that's what you said in reply to my statement about simplifying 11:36:42 =number? is there. 11:36:48 yes 11:36:57 But you can get rid of the product and exponent stuff 11:37:05 hmm, but 11:37:10 operation depends on them. 11:37:24 And you can even get rid of operation by inlining make-sum in FIRST and SECOND 11:37:35 Rip out all useless code that doesn't trigger the bug 11:37:47 If it still bugs out after you do that, you have gotten one step closer to the solution 11:38:14 If it doesn't, you can go back and reason out why that code mattered 11:39:04 ...but be sure only to use the testcase ((1 + 1) + 2) 11:39:34 -!- AtnNn [~welcome@modemcable049.173-176-173.mc.videotron.ca] has quit [Ping timeout: 276 seconds] 11:40:12 first:cond:else:exp:((1 + 3) + 2):f:(1 + 3) 11:40:12 operation:sum:exp:(1 + 3) 11:40:12 (1 + +) 11:40:12 see 11:40:15 when I have this 11:40:22 it's seeing that '(1 + 3) is a sum 11:40:30 it's seeing that the first is 1 11:40:35 but it's thinking the second is + 11:40:42 and, for some reason I'm not seing the output of 11:40:48 the call of (first f) 11:40:52 and (second f) 11:41:05 Perhaps because it's not calling that? 11:41:20 the bug? 11:41:24 because it should. 11:41:29 Possibly 11:41:49 point your finger at that expression and check whether it *reads* what you think it should 11:42:18 "that expression" ? which? 11:42:37 the one that should call (first f) 11:43:13 it gets the operation of s, then it apply it to (first s) and (second s). 11:43:28 for the first, you change s with f. 11:43:35 s/with/to 11:43:54 it's getting the opeartion. 11:44:13 but it's not getting -- it seems -- (first s) and (second s) 11:44:26 well what does it get then? 11:44:47 well, without -- it seems -- entering first and second 11:44:58 it replaces (first s) by 1 and (second s) by '+ 11:45:01 phao: Maybe you can paste the current code you have 11:45:02 you can answer that by printing out the arguments 11:45:17 it's that last one 11:45:20 (without product and exponent) 11:45:26 http://dpaste.com/172471//plain/ 11:45:34 ahh.. 11:45:37 Yuo didn't remove those! 11:45:41 I didn't remove product ane exponent 11:45:49 Why not? They distract me 11:45:52 And you 11:46:00 I'm not even looking at them. 11:46:13 Alright 11:46:16 C-Keen, that's what I'm doing 11:46:23 and I'm puzzled because 11:46:27 it should be printing things like 11:46:33 first:cond:1nd: ... 11:46:40 for the base cases of the recursion 11:47:13 So, are you suggesting that (not (pair? exp)) is wrong? 11:47:18 Maybe you can test that 11:48:24 For example, try (first 1) and see what it says 11:48:29 see 11:48:31 I'm getting this: 11:48:33 first:cond:else:exp:((1 + 3) + 2):f:(1 + 3) 11:48:33 operation:sum:exp:(1 + 3) 11:48:33 (1 + +) 11:48:42 but I should get some lines after "operation:..." 11:48:44 (also note that (pair? a) is not a good test before (caddr a) for a's like '(1 2) 11:48:54 like "first:cond:2nd:..." 11:49:07 phao: Because it calls first how exactly? 11:49:15 C-Keen, the code is modified so that it does'nt happen 11:49:18 what does (operation '(1 + 3)) return? 11:49:53 # 11:50:07 Good 11:50:11 sjamaan, I didn't understand your question... 11:50:36 phao: You expect a particular kind of output but you don't get that. My question is: what should trigger that output? 11:50:38 now what does (first '(1 + 3) ) return? 11:51:07 sjamaan, the fact that f is (1 + 3) 11:51:14 (also what does (second '(1 + 3 )) return 11:51:35 (first '(1 + 3)) 11:51:37 should print 11:51:38 first:cond:2nd:exp:(1 + 3) 11:51:42 phao: C-Keen's questions would be my next questions too 11:51:52 let me see for second 11:51:53 It should print that. What *does* it print? 11:52:03 Test it! 11:52:08 second:cond:2nd:exp:(1 + 3) 11:52:08 3 11:52:19 and first does return 1? 11:52:23 that is what is printed when I do (display (second '(1 + 3)) 11:52:37 And first? 11:52:37 yes 11:52:39 now what does (make-sum 1 3) return? 11:52:41 first:cond:2nd:exp:(1 + 3) 11:52:41 1 11:52:53 4 11:53:01 (make-sum 1 3) ==> 4 11:53:03 great! so that all works 11:53:09 yes 11:53:39 now what do you do in the case of ((1 + 3) + 1) 11:54:39 first:cond:else:exp:((1 + 3) + 1):f:(1 + 3) 11:54:39 operation:sum:exp:(1 + 3) 11:54:39 (1 + +) 11:54:53 that is what I get by (display (first e)) 11:54:58 and e is that expression you said. 11:55:36 well question is: As we know that (first '(1 + 3)) returns 4 what happens _after_ (1 + 3) gets handed over to (first) ? 11:55:56 where is the result of that? 11:56:00 (first '(1 + 3)) returns 1 11:56:03 not 4. 11:56:20 ah sorry. 11:56:31 It does this in the else, right? ((operation f) (first f) (second f)) 11:56:43 yes 11:56:43 Try that manually, substituting f with '(1 + 3) 11:56:46 we just verified that in ((1 + 3) + 1) the (1 + 3) part does get into the right code branch, correct? 11:57:14 yes. 11:57:27 now where is the + 1) part handled? 11:57:58 Good question 11:57:59 if 11:58:06 'e' is that that expression 11:58:09 (first e) 11:58:13 shouldn't touch that last part. 11:58:40 it recognizes that the first is a sub-exp 11:58:45 and works in that sub-exp 11:58:49 it it's not a sub-exp 11:58:53 it return that expression's car 11:59:02 and then after it worked in that sub-exp? 11:59:20 it _SHOULD_ in the subexpression 11:59:24 return the equivalent of 11:59:27 (make-sum 1 3) 11:59:27 it should what 11:59:29 which is 4 11:59:35 and _then_? 11:59:42 after returning 4? 11:59:43 it ends. 12:00:04 then we should see 4 for '((1 + 3) +1) right? 12:00:12 yes 12:00:17 but we don't 12:00:20 yes 12:00:29 -!- joast [~rick@76.178.178.72] has quit [Ping timeout: 245 seconds] 12:00:37 I've found something. 12:00:48 http://download.plt-scheme.org/doc/html/reference/pairs.html?q=first&q=firs#%28def._%28%28lib._scheme/list..ss%29._first%29%29 12:00:49 -rudybot:#scheme- http://tinyurl.com/yk5wd5v 12:01:05 (there is more) 12:01:14 http://download.plt-scheme.org/doc/html/reference/pairs.html?q=second&q=first&q=firs#%28def._%28%28lib._scheme/list..ss%29._second%29%29 12:01:15 MAYBE 12:01:17 -rudybot:#scheme- http://tinyurl.com/ykt9w4c 12:01:19 second isn't being printed 12:01:26 neither first is 12:01:30 because they're defined to be 12:01:42 (list-ref items 0) and (list-ref items 1) 12:01:47 in other parts of mzscheme 12:01:53 and because of that 12:02:01 If that's so, your local version of first and second aren't being honored 12:02:03 instead of calling the fnction i've defined. 12:02:12 that's it sjamaan 12:02:12 mario-goulart [~user@67.205.85.241] has joined #scheme 12:02:15 now... is that a bug? 12:02:27 should my names be prioritized? 12:02:27 It could be, or it could be by design 12:02:44 yes, maybe it's a design choice (strange one) of mzscheme. 12:02:54 phao: you can find out by changing your names to myfirst and mysecond! 12:03:05 yes. 12:03:06 it should work then right? 12:03:09 I'm doing that right now. 12:03:22 You can also try (define (first x) (if (null? x) "hi" (first (cdr x))) and then do (first '(a b c)) 12:03:50 If that returns A you know something's up 12:03:51 yeah 12:03:54 it works with my-first. 12:04:29 phao: Check the documentation. Maybe you're not allowed to redefined builtins in whatever mode you're using 12:04:45 *redefine* 12:05:05 If that's by design, the manual must mention it somewhere 12:07:08 the closest to that, that i've found, is this http://download.plt-scheme.org/doc/html/reference/eval-model.html?q=redefine%20built%20in&q=second&q=first&q=firs#%28idx._%28gentag._0._%28lib._scribblings/reference/reference..scrbl%29%29%29 12:07:10 -rudybot:#scheme- http://tinyurl.com/yaj9jop 12:07:30 and that seems to mean that what I've found is a bug. 12:07:38 but it says nothing about built-ins 12:07:41 or primitives 12:07:47 nah, modules aren't procedures 12:08:02 sure 12:08:32 > (define (first x) (if (null? x) "hi" (first (cdr x))) 12:08:32 ) 12:08:32 > (first '(a b c)) 12:08:32 b 12:08:38 There you go 12:08:42 Simpler than that isn't possible 12:08:52 *that* is the kind of thing that should go in a bugreport 12:09:00 See the difference between what you had? 12:09:06 MrFahrenheit [~RageOfTho@users-55-31.vinet.ba] has joined #scheme 12:09:35 ok 12:09:38 And that's also obviously wrong (either in our expectations of how redefinitions should work, or in PLT scheme itself) 12:10:20 eli: Can you explain this? 12:10:35 is there anyway to undefine something? 12:11:59 phao: I'm guessing it's a feature. If I run plt-r5rs and do the same, I get "hi" 12:12:16 "feature", you mean 12:12:17 :-) 12:12:52 Feel free to debate with eli on that 12:13:02 I'll be elsewhere in the meanwhile :) 12:14:01 I don't know exactly what the problem is, but `first' is SRFI-1. 12:14:59 mario-goulart: Recursive procedures that redefine existing procedures seem to call the existing procedures in their bodies, instead of themselves 12:15:23 (in mzscheme) 12:15:39 Ah! 12:18:56 ok, I've posted a reply in my bug report 12:19:02 explaining what we've found here. 12:20:11 anyway, thkx folks, and I'll start using mit-scheme from now on hehe 12:20:29 yw 12:20:36 yw 12:20:44 I hope you have gained some tools in your debugging toolkit 12:20:55 yw? 12:21:02 You're welcome 12:21:03 I liked that (begin). 12:23:15 chicken also doesnt have that problem 12:23:19 i think I'll use it 12:23:28 since I'd start using it eventually for its compiler 12:23:29 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 12:23:33 I'll start with it now. 12:23:34 you are most welcome to :) but I am biased :) 12:23:51 C-Keen, I didn't understand... 12:23:56 why "but I am biased"? 12:24:07 -!- noam [~k4jd095b@87.70.183.61] has quit [Read error: Connection reset by peer] 12:24:15 it is my favorite scheme implementation 12:24:24 noam [~k4jd095b@87.70.183.61] has joined #scheme 12:24:39 -!- phao [~phao@189.107.131.194] has left #scheme 12:24:42 phao [~phao@189.107.131.194] has joined #scheme 12:24:46 why? you like the name? :-) 12:25:03 heh that too :) 12:25:17 phao: See the list of names in #chicken :) 12:27:04 Chicken is the only Scheme implementation which easily solves the chicken-and-egg problem. 12:27:18 *mario-goulart* hides 12:28:02 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 12:28:42 :) 12:29:02 no it doesn't :) 12:31:01 rdd` [~user@c83-250-52-182.bredband.comhem.se] has joined #scheme 12:31:30 -!- rotty [~rotty@nncmain.nicenamecrew.com] has quit [Remote host closed the connection] 12:35:07 -!- rdd` is now known as rdd 12:37:00 hiyuh [~hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 12:44:37 -!- KatieHuber is now known as KatieHuber|away 12:52:38 ironChicken [~richard@mx.slab.org] has joined #scheme 12:53:53 I need to send a bunch of procedures from one part of my program to another part, for later execution. This could be done with a global list of procedures that append the new ones and executes all of them at the right moment. 12:54:14 But... I'm trying to think of a way of doing this without a mutable list 12:56:24 joast [~rick@76.178.178.72] has joined #scheme 12:57:45 (other-part-of-program the-procedures other-data) 13:00:38 the point is that I don't want the part sending the processes to know anything about one of the arguments, which only the other-part-of-program knows, and it knows it only inside a procedure (is a local binding). 13:00:55 I guess is not directly possible, unless something tricky with continuations, maybe 13:02:17 this is the situation: I can't draw without the "context" but I don't want to introduce the "context" in the part of the program that sends the procedures 13:02:59 Why not? 13:04:30 that would mess up my code a lot, and I don't want to introduce anything about "cairo" or whatever backend I use in the future in the important parts of my program 13:04:50 luz [~davids@189.122.90.116] has joined #scheme 13:05:11 so I was thinking about "sending" the only things that the visualization algorithms need to know in order to visualize my stuff 13:05:12 I don't understand. If a part of your code simply passes parameters along to another part of your code, why does it have to know anything about what it is passing? 13:05:21 -!- PygoscelisPapua [~pygospa@f050137209.adsl.alicedsl.de] has quit [Ping timeout: 252 seconds] 13:05:30 Illustrate with an example. 13:05:36 if it passes it, it must have access first somehow 13:05:46 alvatar: What implementation are you using? 13:06:14 but it doesn't have access to a local binding of another procedure 13:06:20 sjamaan: Gambit 13:06:54 I don't know blackhole, but perhaps it has a way of referring to an interface instead of an actual module 13:06:57 ? 13:07:04 PygoscelisPapua [~pygospa@f055064069.adsl.alicedsl.de] has joined #scheme 13:07:23 Then you can glue in any module that exports that interface 13:07:43 as far as I know, blackhole only lets you deal with modules (import, export, renaming) and compilation/loading 13:08:17 You could also rig something together like that by loading an empty module which exports a couple of names 13:08:32 Then the implementation set!s those identifiers to the appropriate procedures 13:08:38 anyway, I think this is a difficult topic to talk without code to see. I might make a simple example, when I'm sure I can't do this in a straightforward manner 13:08:45 I see 13:08:54 that last thing might be a possibility 13:09:10 If all else fails, ask on their mailinglist :) 13:09:17 Though I'm trying hard not to use "!" 13:09:18 :) 13:09:25 :) 13:09:37 You can write a pretty layer that hides the set!ing, maybe 13:09:38 -!- alvatar [~alvatar@143.119.20.95.dynamic.jazztel.es] has quit [Read error: Connection reset by peer] 13:10:03 alvatar [~alvatar@143.119.20.95.dynamic.jazztel.es] has joined #scheme 13:10:14 agh netsplit 13:10:17 |14:08| ( sjamaan) You can write a pretty layer that hides the set!ing, maybe 13:10:34 But concurrency! Wait, it's graphics. Carry on 13:10:41 heh 13:10:59 yes... and I'm going to start using termite :) 13:11:08 w00t 13:11:10 bans all "!" 13:11:27 yep, the simulation is in termite, sending everything to a "visualization node" 13:13:23 alvatar: Then can't you implement a termite node with an abstract interface you can send messages to, which you implement for cairo, and perhaps for other backends too? 13:14:06 As long as the protocol is the same on the wire, it doesn't matter how the node is implemented 13:14:49 yes, the point is that each one of the cairo calls need to be done with a context (passed as an argument), so at the moment these calls are done you have to have right access to cairo. You can do that only if that context is a global 13:15:18 It only needs to be a global inside the "cairo node", right? 13:15:26 yes 13:15:32 So where's the problem? :) 13:15:54 :D I'm trying to avoid it 13:16:14 as I have some code organized in the other way 13:16:17 but that's ok 13:16:26 What other way? 13:16:28 currently is a closed over variable 13:17:24 to the first call to the function executes initialization code, then allways the some other code (thanks to continuations) 13:17:50 I can post this code 13:17:52 !paste 13:17:55 ?paste 13:17:57 paste! 13:17:58 lisppaste: url? 13:17:58 To use the lisppaste bot, visit http://paste.lisp.org/new/scheme and enter your paste. 13:18:00 :) 13:18:04 :) 13:21:01 alvatar pasted "graphics loop" at http://paste.lisp.org/display/96462 13:22:34 langmartin [~user@exeuntcha2.tva.gov] has joined #scheme 13:23:53 So "cairo" is a let binding, and I need it when drawing. So I need to make the calls inside that function, I can't do it wherever. What I could do is to have a global list of functions that need "cairo", but are waiting for it, then I execute them at this point and pass them the "cairo" context I have there 13:27:03 -!- Adamant [~Adamant@unaffiliated/adamant] has quit [Quit: Adamant] 13:27:34 -!- Mr_Awesome [~eric@c-98-212-139-181.hsd1.il.comcast.net] has quit [Ping timeout: 245 seconds] 13:29:17 -!- hosh_office [~hosh@c-24-126-188-198.hsd1.ga.comcast.net] has quit [Ping timeout: 246 seconds] 13:30:27 hosh_office [~hosh@c-24-126-188-198.hsd1.ga.comcast.net] has joined #scheme 13:32:35 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 13:34:23 Mr_Awesome [~eric@c-98-212-139-181.hsd1.il.comcast.net] has joined #scheme 13:35:35 -!- leppie [~lolcow@196-210-194-69-wblv-esr-3.dynamic.isadsl.co.za] has quit [Ping timeout: 246 seconds] 13:36:05 metasyntax [~taylor@75-149-208-121-Illinois.hfc.comcastbusiness.net] has joined #scheme 13:41:13 -!- PygoscelisPapua [~pygospa@f055064069.adsl.alicedsl.de] has quit [Ping timeout: 264 seconds] 13:42:30 PygoscelisPapua [~pygospa@f055024169.adsl.alicedsl.de] has joined #scheme 13:46:10 I think it works with an appender procedure, modifying a global. At least is everything inside a module/node 13:46:14 lunch time 13:51:14 Fare [~Fare@c-24-218-127-11.hsd1.ma.comcast.net] has joined #scheme 13:55:56 josephholsten [~josephhol@70.234.138.72] has joined #scheme 14:07:40 phao: Use DrScheme, in the default language, 14:08:20 or use mzscheme with your code in a file, with "#lang scheme" on the first line, and run it with "mzscheme your-file" -- don't use `-f'. 14:09:00 jeapostrophe [~jay@lallab.cs.byu.edu] has joined #scheme 14:09:17 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Quit: Leaving] 14:09:21 sjamaan: The problem is that there is an existing binding for it, the code for the new function gets compiled using that, and then the new definition is made. 14:09:57 eli: It would be better if it gave an error right away 14:10:17 "trying to redefine procedure" or something 14:10:22 or a warning 14:10:24 Right, using a module, as I suggested to phao, would produce an error. 14:10:26 indeed 14:10:32 -!- Fare [~Fare@c-24-218-127-11.hsd1.ma.comcast.net] has quit [Quit: Leaving] 14:10:46 eli: I wouldn't expect beginners to use modules 14:10:55 On the repl, there shouldn't be any error, for obvious reasons. 14:11:16 On the contrary, this whole story is a perfect example why beginners *should* use modules. 14:11:27 It only makes code more predictable. 14:11:41 Sure, but it also complicates matters 14:11:46 How? 14:12:05 It's like the Java boilerplate complaint: that you need to stick all these things in your code without knowing what it does 14:12:33 as I understand eli there is a sane default but gets overwritten by the usage of -f 14:12:43 class blahblah { public static main (void) { ... } } 14:13:06 sjamaan: Right, and because of this the boilerplate was first reduced to "#lang scheme", and then drscheme was changed to insert it for you by default. 14:13:21 eli: So what went wrong here? 14:13:50 sjamaan: usage of 'mzscheme withouth language definition' -> drscheme 14:13:53 sjamaan: No "public static" etc -- just "#lang scheme (+ 1 2)" is enough. 14:14:19 ah, drscheme behaves differently from mzscheme 14:14:20 sjamaan: What went wrong is `-f' -- which is using `load' -- which suffers from the same problems that the repl does. 14:14:43 drscheme has a repl too 14:14:52 No, drscheme doesn't behave differently, it just has a different interface to choosing a language. 14:15:46 What language does mzscheme use when you don't specify anything, then? 14:15:52 (BTW, this is exactly one of these things that make Matthew say that the repl is hopeless.) 14:16:59 sjamaan: "don't specify enything" is unclear. If you're talking about running `mzscheme foo' and having some scheme code in `foo' without a `#lang' line or a `module' -- then in that case mzscheme will just throw an error. 14:17:35 eli: "whatever phao was doing", then :) 14:17:49 Or running "mzscheme" and typing in or LOADing the code 14:17:59 (that's how I observed this problem) 14:18:11 phao used `mzscheme -f foo' which is the same as using `load', and in that case the code is all evaluated in a repl. 14:18:34 But what language is that? 14:19:15 It has the `scheme' language bindings (by default), but that's not the problem -- the problem is that it has repl definitions. 14:19:59 s/has repl definitions/is evaluated in a repl/ 14:20:05 ah now I see 14:20:11 *sjamaan* doesn't, yet 14:20:39 sjamaan: the repl allows redefinition of symbols but uses the old bindings if they exist 14:20:59 sjamaan: I'll give you the "short" story since I have to run. (it's close to C-Keen's description.) 14:21:10 ok 14:21:36 The problem there isn't the REPL. It's assignment behavior of `define'. 14:21:38 When you write (define (first) first) in a module, plt will scan the code when it compiles the module, and it will find that `first' is being defined. 14:21:58 Therefore it will assume that all references to `first' are to your own code. 14:22:24 This happens before it actually starts to compile, which means that by the time it compiles the body of `first' it will know to make it do the right thing. 14:23:05 This is important -- especially for newbies -- because it means that you get to keep the nice scheme-ish feature of redefining stuff, but still have deterministic semantics for the code. 14:23:12 If evaluating (define first ...) at the REPL had the semantics of (let () (define first ...) ), there would be no "surprising" behavior of this sort. 14:23:39 So, (define (+ x y) (* x y)) means that `+' will always multiply things -- regardless of the order 14:24:00 Order, of what? 14:24:18 Using `+' in that same module before or after that definition. 14:24:19 Order of top-level forms in the module. 14:24:24 ah, I see 14:24:40 You're talking about forward references 14:24:43 This is unlike r5rs which is trying to mumble something about that being equivalent to (set! + (lambda ...)) 14:24:53 Now, on the repl there are two choices: 14:25:09 one choice is to have a namespace that is *always* referenced by names. 14:25:42 For example (define (foo x y) (+ x y)) will *always* do a lookup of the current binding of `+' and then apply the result. 14:26:05 This must be done for new definitions that you made on the repl, 14:26:12 or with definitions that don't exist yet 14:26:25 -!- PygoscelisPapua [~pygospa@f055024169.adsl.alicedsl.de] has quit [Ping timeout: 260 seconds] 14:26:26 (which is why you can write a definition that uses `foo' before you define `foo') 14:26:40 That sounds fine so far 14:26:43 (That behavior is also broken.) 14:26:48 haha 14:26:51 But the question is what do you do with definitions that come from the language. 14:27:07 That's why I used `+' there -- the problem is with these things. 14:27:32 In the past, mzscheme would create the repl's namespace by creating *copies* of all of the bindings. 14:27:54 IOW, the global namespace for the repl would like like the result of doing (define + +) (define - -) ... 14:28:05 PygoscelisPapua [~pygospa@f055224187.adsl.alicedsl.de] has joined #scheme 14:28:14 So in (define (foo x y) (+ x y)) the `+' would always be a global lookup 14:28:34 and this means that (define (first) first) would also do what phao expected it to do. 14:29:19 Why was it changed? 14:29:23 But the perfomance hit is pretty big, so it was changed to not do this copying, and the result is faster code -- with this thing. 14:29:38 Sounds like quite a price to pay 14:29:54 Is the performance so important on the REPL? 14:30:46 In general, the repl is just a debugging tool -- so you shouldn't use it to develop code (which also means that you shouldn't use `load' to organize your code). 14:31:23 So it's a tradeoff between two bad choices. 14:31:41 If it's just a debugging tool, the old behaviour was fine 14:31:50 Performance isn't that important when debugging 14:31:52 IMO, the current one works fine because it makes it possible to test modules on the reply without any penalties. 14:32:09 But only as a whole 14:32:37 But in any case that decision was already made... (IIRC, Matthew actually polled the plt-scheme list at the time.) 14:32:43 But why preserve this mutation behavior of `define' at all? It might be the "expected" thing, but as you've pointed out, it's essentially broken. 14:33:19 chandler: So the alternative is to make `define' impossible to use at the top level? 14:33:25 heh 14:33:49 the mail where matthew gave the most detailed discussion of why it works this way is here: http://www.cs.brown.edu/pipermail/plt-scheme/2006-December/015643.html 14:33:55 eli: What makes it impossible to use? 14:34:13 eli: Thanks for the explanation 14:34:31 chandler: I thought that this is what you're suggesting. 14:34:37 Yes, you'd have to get over the shadowing behavior of (define a ...) (define b (lambda () a)) (define a ...), but for a "debugging tool" I don't see the problem. 14:35:06 (I'm not following that.) 14:35:12 No, not at all. I'm suggesting that `define' *always* be treated as a binding form, and the REPL have the sequence of an infinitely nested set of `let' forms, ala (let () (let () ...)) 14:35:35 chandler, then you can't define mutually recursive functions at the repl 14:35:40 samth: That's not quite the same as eli explained, but ok 14:35:48 samth: Sure you can; that's what `begin' is for. 14:35:59 chandler, `begin' just splices 14:36:13 Well, I was arguing yesterday that those semantics are wrong too :-) 14:36:13 sjamaan: There were a good number of these, my guess is that samth used the first google result... 14:36:22 eli, that's not true 14:36:22 :) 14:36:42 i looked at all of them, and found the one with the most detailed explanation 14:36:46 samth: But even in the splicing sense, (begin (define a ...) (define b ...)) would just be (let () (define a ...) (define b ...) (let () )) 14:37:06 samth: ok. 14:37:08 Which obviously works fine for mutually recursive functions. 14:37:12 chandler, that's not splicing 14:37:25 indeed 14:37:26 splicing means that it behaves the same as entering them separately 14:37:50 *eli* goes off to deal with plumbing etc 14:38:01 have fun with the plumbing 14:38:01 Well, those semantics are obviously impossible to achieve in this (pardon) scheme. 14:38:12 don't drown 14:38:34 I've got to run too. At some point I need to hack up a prototype of this; I think I've mulled it over long enough. 14:38:58 chandler, one thing to think about is how `load' would work 14:40:43 `load' is an animal of a different color. Its semantics, in the usual sense, are broken too. 14:40:57 But the vast majority of `load' uses I've seen can be sensibly replaced with a syntactic `include' form. 14:41:36 unless you want to include at runtime 14:42:10 C-Keen: That's what's broken about it ;) 14:42:16 sjamaan: oops :) 14:42:41 *C-Keen* shuts up and gets popcorn 14:43:42 -!- PygoscelisPapua [~pygospa@f055224187.adsl.alicedsl.de] has quit [Ping timeout: 276 seconds] 14:45:12 PygoscelisPapua [~pygospa@g226255200.adsl.alicedsl.de] has joined #scheme 14:46:27 mmm, popcorn 14:47:34 -!- myu2 [~myu2@161.90.128.210.bf.2iij.net] has quit [Remote host closed the connection] 14:50:49 -!- alvatar [~alvatar@143.119.20.95.dynamic.jazztel.es] has quit [Quit: leaving] 14:50:53 alvatar [~alvatar@143.119.20.95.dynamic.jazztel.es] has joined #scheme 14:51:58 -!- attila_lendvai [~ati@4d6f5d3b.adsl.enternet.hu] has quit [Ping timeout: 264 seconds] 14:52:34 parolang [~user@8e4a01246100775874c4f448e9887093.oregonrd-wifi-1261.amplex.net] has joined #scheme 14:56:11 -!- hkBst_ [~hkBst@gentoo/developer/hkbst] has quit [Remote host closed the connection] 14:56:39 hkBst_ [~hkBst@gentoo/developer/hkbst] has joined #scheme 15:00:38 bweaver [~user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has joined #scheme 15:13:21 jewel [~jewel@vc-41-29-106-61.umts.vodacom.co.za] has joined #scheme 15:37:57 jimrees_ [~jimrees@ita4fw1.itasoftware.com] has joined #scheme 15:41:54 -!- jewel [~jewel@vc-41-29-106-61.umts.vodacom.co.za] has quit [Ping timeout: 248 seconds] 15:42:14 rudybot: later tell Riastradh when you say, "The reader's focus should not be directed toward the /lexical tokens/;" (emphasis mine) don't you mean "lexemes"? it's the instantiation of tokens one reads, after all; not their abstract forms. 15:42:14 minion: memo for Riastradh: klutometis told me to tell you: when you say, "The reader's focus should not be directed toward the /lexical tokens/;" (emphasis mine) don't you mean "lexemes"? it's the instantiation of tokens one reads, after all; not their abstract forms. 15:42:14 Remembered. I'll tell Riastradh when he/she/it next speaks. 15:43:05 Delegation FTW 15:43:20 sjamaan: heh; how goes it, btw? 15:43:27 It goes well 15:43:54 I'm finally done with numbers 15:44:13 -!- hosh_office [~hosh@c-24-126-188-198.hsd1.ga.comcast.net] has quit [Ping timeout: 264 seconds] 15:44:30 oh, nice; porting the full number stack to chicken 4, you mean? 15:45:43 -!- josephholsten [~josephhol@70.234.138.72] has quit [Quit: josephholsten] 15:52:04 virl [~virl__@chello062178085149.1.12.vie.surfer.at] has joined #scheme 15:53:59 Mandar [~armand@217.108.230.48] has joined #scheme 15:56:15 klutometis: No, I ported the scheme48 numbers code to chicken 15:56:28 I posted an announcement to chicken-users 15:57:18 I'm off 15:57:21 bbl 15:58:06 -!- hkBst_ [~hkBst@gentoo/developer/hkbst] has quit [Read error: Connection reset by peer] 16:01:31 jonrafkind [~jon@c-98-202-82-46.hsd1.ut.comcast.net] has joined #scheme 16:02:48 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 16:03:10 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 16:04:32 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Client Quit] 16:06:39 hosh_office [~hosh@c-24-126-188-198.hsd1.ga.comcast.net] has joined #scheme 16:07:25 annodomini [~lambda@129.170.131.209] has joined #scheme 16:07:25 -!- annodomini [~lambda@129.170.131.209] has quit [Changing host] 16:07:25 annodomini [~lambda@wikipedia/lambda] has joined #scheme 16:15:29 josephholsten [~josephhol@adsl-70-234-138-72.dsl.tul2ok.sbcglobal.net] has joined #scheme 16:22:59 -!- foof [~user@FL1-118-110-11-244.osk.mesh.ad.jp] has quit [Ping timeout: 245 seconds] 16:31:30 -!- Jafet [~Jafet@unaffiliated/jafet] has quit [Ping timeout: 248 seconds] 16:44:44 josephholsten_ [~josephhol@adsl-70-234-138-72.dsl.tul2ok.sbcglobal.net] has joined #scheme 16:46:33 -!- rstandy [~rastandy@net-93-144-16-65.t2.dsl.vodafone.it] has quit [Read error: Connection reset by peer] 16:46:44 Fare [~Fare@ita4fw1.itasoftware.com] has joined #scheme 16:48:19 -!- josephholsten [~josephhol@adsl-70-234-138-72.dsl.tul2ok.sbcglobal.net] has quit [Ping timeout: 276 seconds] 16:48:19 -!- josephholsten_ is now known as josephholsten 16:48:19 -!- PygoscelisPapua [~pygospa@g226255200.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] 16:49:06 rstandy [~rastandy@net-93-144-16-65.t2.dsl.vodafone.it] has joined #scheme 16:52:09 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 240 seconds] 16:53:06 PygoscelisPapua [~pygospa@f055039252.adsl.alicedsl.de] has joined #scheme 16:53:11 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 16:57:40 ASau [~user@83.69.227.32] has joined #scheme 17:09:17 _pr0t0type_ [~864a64c8@gateway/web/freenode/x-spmnvrvzcpwhcoqi] has joined #scheme 17:09:31 -!- Mandar [~armand@217.108.230.48] has quit [Quit: Quitte] 17:10:25 <_pr0t0type_> In scheme, I though a variable was a symbol? If I do: (define x '(1 2 3)) then (symbol? x), I get #f. Why does this happen? 17:10:49 Because the variable x doesn't hold a symbol value 17:11:00 (symbol? 'x) would return #t, though 17:11:16 The quote prevents the x from being evaluated 17:11:28 <_pr0t0type_> Oh, I see 17:11:33 -!- rstandy [~rastandy@net-93-144-16-65.t2.dsl.vodafone.it] has quit [Read error: Connection reset by peer] 17:11:45 that's false. 17:11:47 sjamaan, 17:11:54 #;1> (define x 'a) 17:11:54 #;2> (symbol? x) 17:11:54 #t 17:12:00 the real reason is because 17:12:01 <_pr0t0type_> but if say Y was not defined, and I do (symbol? 'Y) that would give #f. Got it, thanks. 17:12:05 '(1 2 3) is a list. 17:12:10 phao: Please don't do that. sjamaan's explanation was entirely correct. 17:12:14 phao: In this case, the variable x holds the value which is the symbol A 17:12:20 yes. 17:12:25 _pr0t0type_: No, that would return #t. 17:12:37 sjamaan, I thought 17:12:39 you meant that 17:12:42 x isn't a symbol 17:12:48 I mean, the word x 17:12:48 That's not what I said :) 17:12:51 rstandy [~rastandy@net-93-144-16-65.t2.dsl.vodafone.it] has joined #scheme 17:12:53 I don't know how to explain it. 17:12:58 It's oke 17:13:00 but I thought that if you'd look directly 17:13:03 phao: Then you shouldn' 17:13:07 t try to explain it. 17:13:07 x isn't a symbol. 17:13:10 Daemmerung, :-) 17:13:10 mickn [~mickn@76-10-151-212.dsl.teksavvy.com] has joined #scheme 17:13:13 _pr0t0type_: The fact that the variable isn't bound doesn't matter when you quote it 17:13:15 phao: You don't have to send messages that often. You can wait until you have a complete thought buffered up. 17:13:22 heh 17:13:28 chandler, Well... I cannot 17:13:38 it's an old habit I have since... 10 years ago I think. 17:13:41 it's kinda hard to stop. 17:13:41 <_pr0t0type_> I think the real question is, then, what exactly IS a symbol. 17:13:43 e e cummings 17:13:44 is in 17:13:45 the 17:13:47 house 17:13:48 attila_lendvai [~ati@catv-89-134-66-143.catv.broadband.hu] has joined #scheme 17:13:52 _pr0t0type_: x is a symbol when read 17:13:59 When evaluated, it is a variable with the name x 17:13:59 I used to do just like Daemmerung did. 17:14:05 now I can type 5 words 17:14:06 or 6. 17:14:16 phao: Habits are made to be broken. This one, especially so. 17:14:20 <_pr0t0type_> sjamaan: ah, I see. 17:14:25 _pr0t0type_: Try (symbol? (read)), then type in an x 17:14:32 _pr0t0type_, to help you, ignore what I said. 17:14:43 <_pr0t0type_> alright, let me try. 17:15:38 _pr0t0type_: eval and quote are eachother's opposite. quote prevents evaluation, eval forces it. So when you do: (define x 1), 'x returns the symbol x but (eval 'x) returns 1 -- the value of x 17:15:45 <_pr0t0type_> sjamaan: so the value read by the (read) does not get evaluated I'm assuming 17:15:50 Right 17:16:09 You are at the REPL, which is the scheme prompt 17:16:13 is quotation like other languages' strings? 17:16:13 What is the opposite of `quote' in (let ((x 1)) 'x) ? 17:16:16 REPL stands for Read, Eval, Print, Loop 17:16:22 dnolen [~dnolen@ool-18bc2fa9.dyn.optonline.net] has joined #scheme 17:16:41 So it reads what you type in, calls eval on it, prints the result and loops again over and over 17:16:58 <_pr0t0type_> okay, everything is making a lot of sense now. 17:17:10 chandler: There's none, since you cannot reify the LET's internal environment 17:17:28 <_pr0t0type_> sjamaan, phao: Thanks guys, I appreciated it. 17:17:32 yw 17:17:34 sjamaan: That is the point I was making. 17:17:45 -!- Nanakhiel [~Lajla@213-84-222-243.adsl.xs4all.nl] has quit [Ping timeout: 260 seconds] 17:17:51 However, if you could, you could pass it to eval :) 17:18:05 And obtain the value of x 17:18:37 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 17:19:14 phao: As to your question: no, symbols are their own distinct data type 17:19:28 Ruby is the only other non-lisp language I'm aware of that has symbols 17:19:46 I remember comparing some algorithms one or two years ago that pretty much did the same thing. They were very simple. I think one was some sort of very simple iteration and the other was fib. numbers generation. I remember doing pretty much the same thing in python and then, I implemented pretty much the same thing in scheme. 17:19:48 (and their tutorials often spend a lot of time trying to explain what exactly symbols are :P ) 17:19:54 python's runned in 4 min and 50s. 17:20:01 scheme's in 50s 17:20:06 ouch :) 17:20:07 dabr [~damian@192-18.77-83.cust.bluewin.ch] has joined #scheme 17:20:09 does that huge 17:20:11 difference has to do 17:20:24 with the fact that scheme is almost "self explanatory" to the interpreter? 17:20:35 No, that doesn't seem very likely 17:20:38 Probably none. Which Scheme were you using? 17:20:38 -!- josephholsten [~josephhol@adsl-70-234-138-72.dsl.tul2ok.sbcglobal.net] has quit [Quit: josephholsten] 17:20:40 -!- dabr [~damian@192-18.77-83.cust.bluewin.ch] has left #scheme 17:20:44 Python has a rather poor (default) implementation. 17:20:44 It's more likely you did something silly in Python :) 17:20:53 chandler, I don't recall correctly, but I'm almost sure it was mzscheme. 17:21:21 phao: However, symbols can be compared in constant time, whereas string comparisons must be done character-by-character 17:21:31 I haven't run any benchmarks personally, but I'm not generally surprised by a JIT-compiling implementation beating a bytecode interpreter. 17:21:32 phao: have you tried to run the python code using a JIT? 17:21:34 sjamaan, how is that? 17:21:51 mario-goulart, never. I only learned python to read two books 17:21:52 phao: all symbols of the same text string are the same 17:22:01 that were being using in 6.000 course at mitocw. 17:22:16 While all strings are different (usually) 17:22:18 phao: Psyco (a JIT) can lead to a great performance improvement. 17:22:42 "psycho (a jit)" -- is that a python implementation? 17:22:59 So if you were using strings in Python and symbols in Scheme it may have contributed to the difference 17:23:00 phao: no, a JIT. :-) 17:23:04 sjamaan, so it'd be like, in C, a pointer comparison? 17:23:04 heh 17:23:05 (for Python) 17:23:09 saint_cypher [~saint_cyp@adsl-99-2-72-93.dsl.pltn13.sbcglobal.net] has joined #scheme 17:23:09 phao: Exactly 17:24:06 mario-goulart, I just realized I didn't know what a JIT is 17:24:24 :-) 17:24:31 Google will answer that question. 17:24:56 Only if you ask nicely! 17:25:01 The all-knowing Google suggests you read: http://en.wikipedia.org/wiki/Just-in-time_compilation 17:25:03 chandler, wikipedia did it too. 17:25:06 hehe 17:25:11 Indeed. 17:25:24 Now, give me a minute to fill that Wikipedia page with lies. 17:26:10 Once I run this silly benchmark: http://antoniocangiano.com/2007/11/28/holy-shmoly-ruby-19-smokes-python-away/ 17:26:11 -rudybot:#scheme- http://tinyurl.com/yrm946 17:26:29 The performance of python with psyco is amazing. 17:27:03 Funnily enough, Chicken outerperforms C in this specific case. 17:27:04 Relatively amazing, I assume. 17:27:18 heh! 17:27:33 I would guess that a good Scheme, Common Lisp, or ML would smoke Python even with Psyco. 17:27:50 chandler: sure. 17:27:59 (Or Factor.) 17:31:04 chandler, why? 17:32:55 Several reasons. One is that these languages were designed with efficient compilation in mind, whereas Python and Ruby were designed by people who were making it up as they went along and enormously proud of their ignorance of the work that's been done in programming language semantics and compilation. 17:33:15 Another is that many of these implementations have been around for a lot longer than Python or Ruby. 17:40:59 -!- derrida [~derrida@unaffiliated/deleuze] has quit [Quit: <.>.<.>] 17:47:25 or they believed that the semantics of a programming language were for machines second and humans first 17:47:57 Semantic clarity is for both machines and humans. 17:49:02 Agreed. Just look at ruby 17:49:19 My point really being that Matz at least is a fan of Lisp. He's just expressed frustration with the syntax. 17:49:34 Su he screwed the semantics. 17:49:39 He made a language without thinking how it could grow 17:49:40 s/Su/So/ 17:49:44 It's the difference between a logical user interface designed with input from user studies and a user interface designed around the "hey, wouldn't it be neat" principle. Occasionally, the latter produces something interesting, but more often than not it will just cause unanticipated problems. 17:49:46 And now they're stuck with nasty syntax 17:52:36 Does the most recent version of Ruby still close over *all* visible lexicals in a block, or has that been fixed so that only the variables that are actually used are retained? I'm afraid my Google-fu has failed me on this one. 17:53:17 As I recall, this behavior was difficult to get rid of because some major library or program was depending on it. 17:55:09 yes it does 17:56:57 That's a very good example, because it effectively makes it impossible to write programs in Continuation-Passing Style, along with several other related and interesting uses of closures. Such programs will grow in space consumption until all available memory has been exhausted. 17:57:08 Is this friendly for humans? 17:57:24 I don't think so. Better semantics enables better expressivity. 17:59:50 Sometimes I think people over-react on lisp's syntax. 18:00:19 -!- dnolen [~dnolen@ool-18bc2fa9.dyn.optonline.net] has quit [Quit: dnolen] 18:00:28 I mean... it may not be like the way we're used to write, but sometimes it's exacly like we talk "Sum a and b" (+ a b). 18:00:32 It's not that hard. 18:00:49 I'm not sure that I agree with you or not but, memory handling and making ruby handle continuations sanely would be an implementer and machine issue and not an anti-human one. I'm not saying ruby isn't limited by those factors. 18:01:57 It's limited by the semantics that were chosen, of which this is a definite example. I can't use closures for non-trivial uses because the language can't identify what variables are closed over and garbage collect values that are otherwise inaccessible. 18:02:18 chandler: I think you can in ruby 1.9. 18:02:44 (regarding to the blocks bug) 18:02:53 -!- pchrist [~spirit@gentoo/developer/pchrist] has quit [Quit: leaving] 18:05:23 Well, that's an improvement then. 18:08:48 -!- MrFahrenheit [~RageOfTho@users-55-31.vinet.ba] has quit [Read error: No route to host] 18:09:07 MrFahrenheit [~RageOfTho@users-55-31.vinet.ba] has joined #scheme 18:11:27 and in 50 odd years.... 18:14:03 *mario-goulart* laughs 18:15:24 Fabse [~mightyfid@wikipedia/Track-n-Field] has joined #scheme 18:16:18 50 odd years is 100 years, right? 18:16:39 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 18:23:34 seangrove [~user@70-36-146-156.dsl.dynamic.sonic.net] has joined #scheme 18:24:18 ofcourse 18:26:26 99 years. assuming they're contiguous 18:26:44 otherwise, 50 unblemished apples are fifty apples 18:30:14 leppie [~lolcow@196-210-194-69-wblv-esr-3.dynamic.isadsl.co.za] has joined #scheme 18:30:15 -!- _pr0t0type_ [~864a64c8@gateway/web/freenode/x-spmnvrvzcpwhcoqi] has quit [Quit: Page closed] 18:31:40 toekutr [~toekutr@adsl-69-107-143-127.dsl.pltn13.pacbell.net] has joined #scheme 18:31:54 jlongster [~user@adsl-070-148-197-047.sip.cha.bellsouth.net] has joined #scheme 18:32:23 -!- mickn [~mickn@76-10-151-212.dsl.teksavvy.com] has quit [Quit: Leaving] 18:33:08 -!- Poeir [~Poeir@c-98-228-48-133.hsd1.il.comcast.net] has quit [Quit: Leaving] 18:34:50 doelie [~tom@cust-63-77-109-94.dyn.as47377.net] has joined #scheme 18:36:21 -!- phao [~phao@189.107.131.194] has quit [Quit: Leaving] 18:36:24 Poeir [~Poeir@c-98-228-48-133.hsd1.il.comcast.net] has joined #scheme 18:40:43 -!- MichaelRaskin [~MichaelRa@pantagruel.mccme.ru] has quit [Remote host closed the connection] 18:40:54 -!- leppie [~lolcow@196-210-194-69-wblv-esr-3.dynamic.isadsl.co.za] has quit [] 18:41:08 -!- langmartin [~user@exeuntcha2.tva.gov] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 18:45:02 mejja [~user@c-68b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #scheme 18:47:43 hadronzoo [~hadronzoo@rrcs-67-78-79-54.sw.biz.rr.com] has joined #scheme 18:48:19 langmartin [~user@exeuntcha2.tva.gov] has joined #scheme 18:58:44 annodomini [~lambda@wikipedia/lambda] has joined #scheme 18:59:54 copumpkin [~copumpkin@dhcp-212-200.cs.dartmouth.edu] has joined #scheme 19:00:39 -!- saccade_ [~saccade@209-6-54-113.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Quit: This computer has gone to sleep] 19:03:23 bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has joined #scheme 19:07:49 phao [~phao@189.107.219.207] has joined #scheme 19:08:56 wingo [~wingo@48.Red-79-151-126.dynamicIP.rima-tde.net] has joined #scheme 19:10:28 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 19:10:35 *wingo* swings in on a wine, er, a vine 19:13:17 -!- metasyntax [~taylor@75-149-208-121-Illinois.hfc.comcastbusiness.net] has quit [Quit: Be seeing you.] 19:13:20 kssreeram [~kssreeram@122.174.143.48] has joined #scheme 19:14:15 Tarzan of the Apps 19:14:28 er, %#app s 19:14:47 heh 19:20:26 incubot:There is *no need* for an alternative proposal. 19:20:30 Can someone else explain why if I want to use => somewhere in a macro that might magically end up in COND's transformer's args that I need to make => a local variable then rather than a top-level one? 19:21:15 metasyntax [~taylor@75-149-208-121-Illinois.hfc.comcastbusiness.net] has joined #scheme 19:25:05 http://en.wikipedia.org/wiki/Peanut_gallery 19:25:22 ehm... 19:25:37 is there a way to call/cc passing an argument also? 19:25:45 currently I'm doing something ugly: 19:26:22 a wrapper procedure that set! the argument which can then be accessed by the call/cc'ed procedure 19:26:40 what do you mean, passing an argument? 19:27:15 well, call/cc calls a function passing it the current continuation 19:27:20 I want to pass something else also 19:27:42 have the function close over that "something else" 19:28:48 yes, i'm doing that, but every time that "something else" has changed I have to set! it 19:29:10 so then, there is no call/cc with more arguments I see 19:29:12 i don't understand what you're trying to do. sorry. 19:29:38 you have to allow access to that arguments in a different way (globals or closed over variables) 19:29:48 okay 19:29:50 alvatar, perhaps an example would help 19:29:58 you are right 19:30:18 http://paste.lisp.org/new/scheme 19:30:21 I don't understand what `set!' does for you. 19:30:50 If you want (call/cc1 (lambda (k arg) ...) some-value), that's trivial to write without any mutation. 19:31:06 is it? 19:31:16 well that's my question 19:31:27 :) how do you do it? 19:31:53 rudybot: eval (define call/cc1 (lambda (procedure value) (call/cc (lambda (k) (procedure k value))))) 19:32:06 chandler: your scheme sandbox is ready 19:32:20 *chandler* drums fingers impatiently 19:32:23 Oh, no output. 19:32:33 rudybot: eval (call/c1 (lambda (k v) (k v)) 42) 19:32:34 chandler: error: reference to an identifier before its definition: call/c1 in module: 'program 19:32:40 rudybot: eval (call/cc1 (lambda (k v) (k v)) 42) 19:32:40 chandler: ; Value: 42 19:33:12 Is this what you were looking for? 19:33:37 yes it is! 19:33:40 and it works 19:33:56 I haven't fully understood continuations I can see :( 19:34:08 There's nothing magic here. call/cc is an ordinary procedure and follows the rules for such. 19:34:16 alvatar: This has nothing to do with continuations but with closures 19:34:25 yes yes 19:34:29 indeed 19:34:46 pchrist [~spirit@gentoo/developer/pchrist] has joined #scheme 19:35:02 oh ok 19:35:06 I didn't read the code 19:35:19 it is easy and I should think more before asking here!!! 19:35:29 Thinking helps 19:35:29 well, anyway 19:35:30 :) 19:35:31 THANKS 19:35:44 You should at least read the code when someone gives you an example. :-) 19:36:14 hehe of course! :) I just tested it first 19:36:31 I'm impatient :P 19:37:23 -!- bytecolor [~user@adsl-70-136-249-169.dsl.scrm01.sbcglobal.net] has left #scheme 19:41:47 -!- attila_lendvai [~ati@catv-89-134-66-143.catv.broadband.hu] has quit [Ping timeout: 265 seconds] 19:44:29 drwho [~drwho@c-71-225-11-30.hsd1.pa.comcast.net] has joined #scheme 19:48:36 -!- Fare [~Fare@ita4fw1.itasoftware.com] has quit [Quit: Leaving] 20:03:41 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 20:04:10 -!- alvatar [~alvatar@143.119.20.95.dynamic.jazztel.es] has quit [Quit: leaving] 20:11:10 josephholsten [~josephhol@adsl-64-149-63-227.dsl.tul2ok.sbcglobal.net] has joined #scheme 20:11:51 -!- josephholsten [~josephhol@adsl-64-149-63-227.dsl.tul2ok.sbcglobal.net] has quit [Client Quit] 20:17:14 -!- langmartin [~user@exeuntcha2.tva.gov] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 20:21:21 -!- metasyntax [~taylor@75-149-208-121-Illinois.hfc.comcastbusiness.net] has quit [Quit: Be seeing you.] 20:23:32 -!- hadronzoo [~hadronzoo@rrcs-67-78-79-54.sw.biz.rr.com] has quit [Quit: hadronzoo] 20:35:50 elderK [~elderK@125-238-255-27.jetstream.xtra.co.nz] has joined #scheme 20:35:50 -!- elderK [~elderK@125-238-255-27.jetstream.xtra.co.nz] has quit [Changing host] 20:35:50 elderK [~elderK@pdpc/supporter/active/elderk] has joined #scheme 20:36:44 annodomini [~lambda@wikipedia/lambda] has joined #scheme 20:39:53 josephholsten [~josephhol@adsl-64-149-63-227.dsl.tul2ok.sbcglobal.net] has joined #scheme 20:42:38 -!- josephholsten [~josephhol@adsl-64-149-63-227.dsl.tul2ok.sbcglobal.net] has quit [Client Quit] 20:43:31 -!- copumpkin [~copumpkin@dhcp-212-200.cs.dartmouth.edu] has quit [Remote host closed the connection] 20:48:09 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 20:52:09 -!- jonrafkind [~jon@c-98-202-82-46.hsd1.ut.comcast.net] has quit [Ping timeout: 240 seconds] 20:59:49 -!- KatieHuber|away is now known as KatieHuber 21:00:06 TR2N [email@89-180-153-245.net.novis.pt] has joined #scheme 21:00:17 josephholsten [~josephhol@64.149.63.227] has joined #scheme 21:00:31 jmcphers [~jmcphers@218.185.108.156] has joined #scheme 21:05:32 -!- toekutr [~toekutr@adsl-69-107-143-127.dsl.pltn13.pacbell.net] has quit [Quit: Leaving] 21:13:27 -!- ziggurat [~quassel@pool-173-71-25-61.dllstx.fios.verizon.net] has quit [Read error: Connection reset by peer] 21:14:05 -!- Poeir [~Poeir@c-98-228-48-133.hsd1.il.comcast.net] has quit [Read error: Connection reset by peer] 21:20:24 saccade_ [~saccade@dhcp-18-111-68-179.dyn.mit.edu] has joined #scheme 21:21:29 foof [~user@FL1-118-110-11-244.osk.mesh.ad.jp] has joined #scheme 21:26:45 antoszka [~antoszka@unaffiliated/antoszka] has joined #scheme 21:31:09 -!- josephholsten [~josephhol@64.149.63.227] has quit [Quit: josephholsten] 21:32:28 erato [~user@081-003-214-196.yesss.at] has joined #scheme 21:32:49 -!- melba [~blee@unaffiliated/lazz0] has quit [Quit: my favourite color is blue......NO, YELLOWWWWWWWWW] 22:01:03 jcowan [~jcowan@nat/google/x-uioyrtorqhnclwth] has joined #scheme 22:01:52 copumpkin [~copumpkin@c-75-69-96-50.hsd1.nh.comcast.net] has joined #scheme 22:10:54 -!- doelie [~tom@cust-63-77-109-94.dyn.as47377.net] has quit [Ping timeout: 276 seconds] 22:11:32 -!- jlongster [~user@adsl-070-148-197-047.sip.cha.bellsouth.net] has quit [Read error: Operation timed out] 22:13:14 -!- adzuci_ [~ada2358@login-linux.ccs.neu.edu] has quit [Ping timeout: 265 seconds] 22:18:23 Owner__ [~c7588f01@gateway/web/freenode/x-tsfxzrdkxfsdybtv] has joined #scheme 22:18:41 -!- Owner__ is now known as Owner_ 22:19:25 it looks like http://www.scheme.dk/planet/ has a duplicate post today. or, is it just me? 22:21:03 seems so 22:21:48 i thought i saw a different one ealier, about converting a list of [letter] [number]+ into a list of pairs 22:22:49 planet is written in python. clearly it is buggy ;) 22:23:46 Every planet I've ever seen has issues due to inconsistent RSS usage regarding dates 22:23:56 perhaps part of the problem is that it thinks that jlongster's blog is at localhost:8001/blog/ 22:24:19 i dont use rss 22:24:42 at least not intentionally 22:25:16 if you use planet, you use rss 22:25:30 josephholsten [~josephhol@adsl-64-149-63-227.dsl.tul2ok.sbcglobal.net] has joined #scheme 22:25:38 that's tricky 22:29:32 -!- josephholsten [~josephhol@adsl-64-149-63-227.dsl.tul2ok.sbcglobal.net] has quit [Client Quit] 22:30:45 -!- chandler [~n@opendarwin/developer/chandler] has quit [Ping timeout: 252 seconds] 22:32:11 chandler [~n@new.unmutual.info] has joined #scheme 22:32:17 -!- fda314925 [~fda314925@121.124.124.117] has quit [Ping timeout: 260 seconds] 22:32:29 -!- chandler [~n@new.unmutual.info] has quit [Changing host] 22:32:29 chandler [~n@opendarwin/developer/chandler] has joined #scheme 22:33:07 fda314925 [~fda314925@121.124.124.117] has joined #scheme 22:34:47 -!- bweaver [~user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 22:35:33 -!- alexsuraci [~alexsurac@pool-71-188-133-67.aubnin.fios.verizon.net] has quit [Read error: Connection reset by peer] 22:37:37 -!- Owner_ [~c7588f01@gateway/web/freenode/x-tsfxzrdkxfsdybtv] has quit [Quit: Page closed] 22:48:58 -!- ray [ray@the.ug] has quit [Ping timeout: 264 seconds] 22:49:07 ray [ray@the.ug] has joined #scheme 22:50:38 -!- antoszka [~antoszka@unaffiliated/antoszka] has quit [Quit: +++ killed by SIGSEGV +++] 22:51:17 -!- erato [~user@081-003-214-196.yesss.at] has quit [Remote host closed the connection] 22:56:38 -!- fradgers- [~fradgers-@5ad4c06e.bb.sky.com] has quit [Ping timeout: 256 seconds] 22:56:56 fradgers- [~fradgers-@5ad4c06e.bb.sky.com] has joined #scheme 22:59:35 slilo`` [~user@host-94-251-99-133.bbcustomer.zsttk.net] has joined #scheme 22:59:41 -!- slilo` [~user@host-94-251-99-133.bbcustomer.zsttk.net] has quit [Remote host closed the connection] 23:01:54 -!- TR2N [email@89-180-153-245.net.novis.pt] has quit [Ping timeout: 248 seconds] 23:04:13 hadronzoo [~hadronzoo@ppp-70-251-66-249.dsl.rcsntx.swbell.net] has joined #scheme 23:04:25 -!- nowhere_man [~pierre@lec67-4-82-235-57-28.fbx.proxad.net] has quit [Ping timeout: 258 seconds] 23:06:44 TR2N [email@89.180.153.245] has joined #scheme 23:07:31 -!- futilius [~otheruser@2001:470:d:128:216:3eff:fe86:c70e] has quit [Ping timeout: 268 seconds] 23:08:19 futilius [~otheruser@2001:470:d:128:216:3eff:fe86:c70e] has joined #scheme 23:09:39 -!- wingo [~wingo@48.Red-79-151-126.dynamicIP.rima-tde.net] has quit [Ping timeout: 240 seconds] 23:14:07 wingo [~wingo@48.Red-79-151-126.dynamicIP.rima-tde.net] has joined #scheme 23:18:29 mbohun [~mbohun@202.124.75.29] has joined #scheme 23:20:14 -!- Pepe_ [~ppjet@xvm-22-22.ghst.net] has quit [Read error: Operation timed out] 23:20:19 Pepe_ [~ppjet@xvm-22-22.ghst.net] has joined #scheme 23:20:40 -!- lisppaste [~lisppaste@common-lisp.net] has quit [Quit: Want lisppaste in your channel? Email lisppaste-requests AT common-lisp.net.] 23:20:43 lisppaste [~lisppaste@common-lisp.net] has joined #scheme 23:20:54 -!- Axioplase_ [~Axioplase@fortigate.kb.ecei.tohoku.ac.jp] has quit [Ping timeout: 258 seconds] 23:21:30 Axioplase_ [~Axioplase@fortigate.kb.ecei.tohoku.ac.jp] has joined #scheme 23:27:08 -!- jcowan [~jcowan@nat/google/x-uioyrtorqhnclwth] has left #scheme 23:28:24 -!- wingo [~wingo@48.Red-79-151-126.dynamicIP.rima-tde.net] has quit [Ping timeout: 245 seconds] 23:30:30 -!- fradgers- [~fradgers-@5ad4c06e.bb.sky.com] has left #scheme 23:34:22 -!- joast [~rick@76.178.178.72] has quit [Quit: Leaving.] 23:34:53 joast [~rick@76.178.178.72] has joined #scheme 23:36:48 -!- ASau``` [~user@83.69.227.32] has quit [Remote host closed the connection] 23:36:54 ASau``` [~user@83.69.227.32] has joined #scheme 23:36:56 -!- ASau [~user@83.69.227.32] has quit [Remote host closed the connection] 23:37:24 ASau [~user@83.69.227.32] has joined #scheme 23:48:00 sepult [~user@xdsl-87-78-123-4.netcologne.de] has joined #scheme 23:54:21 -!- slxix [r@li144-113.members.linode.com] has quit [Ping timeout: 252 seconds] 23:54:23 slxix [r@li144-113.members.linode.com] has joined #scheme 23:58:58 alexsuraci [~alexsurac@pool-71-188-133-67.aubnin.fios.verizon.net] has joined #scheme