00:00:23 well, I call foo and then want foo to continue where the calling function called it 00:01:55 arcfide: for example, here : http://pastebin.ca/1530039 00:02:12 -!- jonrafkind [n=jon@crystalis.cs.utah.edu] has quit [No route to host] 00:02:32 how does superfluous computation continue back in hefty-computation ? 00:03:34 -!- copumpkin [n=pumpkin@129.170.241.32] has quit [Client Quit] 00:04:10 lisppaste: url? 00:04:10 To use the lisppaste bot, visit http://paste.lisp.org/new/scheme and enter your paste. 00:04:28 CSMan: for future use ^^ 00:04:41 ha 00:09:37 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 00:15:46 -!- stepnem [n=stepnem@topol.nat.praha12.net] has quit [Read error: 60 (Operation timed out)] 00:15:54 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 00:19:15 stepnem [n=stepnem@topol.nat.praha12.net] has joined #scheme 00:22:15 -!- stepnem [n=stepnem@topol.nat.praha12.net] has quit [Excess Flood] 00:23:07 stepnem [n=stepnem@topol.nat.praha12.net] has joined #scheme 00:26:34 -!- langmartin [n=user@exeuntcha.tva.gov] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 00:27:08 -!- stepnem [n=stepnem@topol.nat.praha12.net] has quit [Excess Flood] 00:34:51 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 00:35:27 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 00:49:43 dysinger [n=dysinger@71.20.35.99] has joined #scheme 00:53:53 -!- mrsolo [n=mrsolo@nat/yahoo/x-hwyqvhpykfohoxgj] has quit ["Leaving"] 00:57:35 stepnem [n=stepnem@topol.nat.praha12.net] has joined #scheme 00:59:16 csman pasted "hefty computation" at http://paste.lisp.org/display/85406 01:00:02 so, could anybody explain the need for (set! do-other-stuff ... ) ? 01:24:03 bombshelter13_ [n=bombshel@76-10-149-209.dsl.teksavvy.com] has joined #scheme 01:24:43 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["Lost terminal"] 01:27:26 dnm_ [n=dnm@cpe-69-204-149-14.nycap.res.rr.com] has joined #scheme 01:33:54 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 01:33:54 CSMan: assuming you call one of these functions with the other, this is basically a way to jump back and forth between the execution of these procedures. Or, in other words, coroutines. 01:34:31 I have to go now though. You should study some of the chapters that explain how continuations work in the various books on Scheme. 01:34:40 -!- arcfide [n=arcfide@adsl-99-14-210-197.dsl.bltnin.sbcglobal.net] has left #scheme 01:35:50 Khisanth [n=Khisanth@pool-68-237-101-85.ny325.east.verizon.net] has joined #scheme 01:44:15 -!- masm [n=masm@bl10-6-227.dsl.telepac.pt] has quit ["Leaving."] 01:46:58 sepult` [n=user@xdsl-87-78-25-37.netcologne.de] has joined #scheme 01:51:48 svf [n=svf@pdpc/supporter/active/svf] has joined #scheme 02:03:03 Elly [n=pyxystyx@unaffiliated/elly] has joined #scheme 02:05:01 -!- sepult [n=user@xdsl-87-78-103-121.netcologne.de] has quit [Success] 02:06:33 -!- jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [] 02:34:02 jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 02:53:03 tjafk1 [n=timj@e176210152.adsl.alicedsl.de] has joined #scheme 03:04:51 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [] 03:09:35 -!- tjafk2 [n=timj@e176220073.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 03:10:58 jedc [n=jedc@pool-70-17-156-181.wma.east.verizon.net] has joined #scheme 03:19:10 jcowan, pong! 03:19:17 minion: memo for jcowan: pong! 03:19:17 Remembered. I'll tell jcowan when he/she/it next speaks. 03:19:20 Good bot. 03:20:12 -!- MononcQc [i=MononcQc@modemcable062.225-20-96.mc.videotron.ca] has quit ["DOWNLOADING NEXT VERSION OF INTERNET"] 03:24:20 -!- alaricsp [n=alaricsp@217.205.201.45] has quit [Read error: 110 (Connection timed out)] 03:28:21 minion: memo for jcowan: be afraid. Be very afraid. 03:28:21 Remembered. I'll tell jcowan when he/she/it next speaks. 03:28:31 rudybot: later tell gnomon ... oh never mind. 03:28:31 minion: memo for gnomon: offby1 told me to tell you: ... oh never mind. 03:28:31 Remembered. I'll tell gnomon when he/she/it next speaks. 03:28:48 MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has joined #scheme 03:31:03 minion: memo for rudybot: rudybot: memo for offby1: never mind what? 03:31:03 Remembered. I'll tell rudybot when he/she/it next speaks. 03:31:03 gnomon, memo from rudybot: offby1 told me to tell you: ... oh never mind. 03:31:13 rudybot? 03:31:27 rudybot, si vis pacem..? 03:31:27 gnomon: eh? Try "rudybot: help". 03:31:27 rudybot, memo from gnomon: rudybot: memo for offby1: never mind what? 03:31:27 minion: memo from gnomon: rudybot: memo for offby1: never mind what? 03:31:28 good, i'll forget it 03:31:46 What hath rudy wrought? 03:41:32 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 03:44:54 -!- jedc [n=jedc@pool-70-17-156-181.wma.east.verizon.net] has quit [Read error: 104 (Connection reset by peer)] 03:50:50 *offby1* clears throat 03:50:54 hallooo 03:51:03 hey offby1 03:51:11 How goes it, offby1? 03:51:32 lowlycoder, what was the PDF document that you wanted to resize? 03:51:33 lumbering along 03:51:51 *offby1* skewers an oyster on a toothpick 03:51:54 offby1, glad to hear it :) How is the warmer weather treating you so far? 03:53:03 you have oysters and toothpicks? 03:53:26 Why, back in my day, we had to make do with splinters, and oyster-shaped plankton. 03:53:27 warmer than what? 03:53:34 it's been cloudy and raining. 03:53:41 Damn, I just signed my wife's absentee ballot. 03:53:59 You get to vote on the weather out there?! 03:54:04 sure 03:54:05 How wonderfully civilized. 03:54:16 everyone talks about politics but nobody ever does anything about it 03:55:16 -!- dysinger [n=dysinger@71.20.35.99] has quit [Read error: 110 (Connection timed out)] 04:00:07 offby1: what are you up to, anyway? 04:06:14 just working. 04:06:45 although, it being Friday, at the present moment I'm up to oysters, gin, and contemplating reading in bed 04:06:47 exciting life 04:07:02 I'd stay up later but the cat insists we go to bed, and y'know we're his slaves, so ... 04:07:16 cats get like that 04:10:13 he's pretty old 04:11:18 gnomon: programming clojure :-) 04:11:34 hh/window 9 04:17:23 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 04:36:20 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Read error: 104 (Connection reset by peer)] 04:39:21 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 04:44:41 dysinger [n=dysinger@71.20.35.99] has joined #scheme 05:04:38 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Read error: 104 (Connection reset by peer)] 05:10:06 -!- jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [] 05:19:52 -!- dysinger [n=dysinger@71.20.35.99] has quit [Read error: 110 (Connection timed out)] 05:28:46 peter_12 [n=peter_12@S01060024016bb36c.gv.shawcable.net] has joined #scheme 05:29:30 Has anyone ever noted that having both Pairs and Vectors is unnecessary? Vectors could do it all. 05:31:26 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 05:34:21 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["leaving"] 05:34:32 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 05:34:35 -!- peter_12 [n=peter_12@S01060024016bb36c.gv.shawcable.net] has quit [] 05:34:37 kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has joined #scheme 06:09:42 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["leaving"] 06:22:01 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 06:22:18 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit [Client Quit] 06:38:15 -!- bombshelter13_ [n=bombshel@76-10-149-209.dsl.teksavvy.com] has quit [Remote closed the connection] 06:45:21 Vectors get tired too. I can't hold this family up by myself dear, you have to contribute. 06:46:08 So cons your own sandwich tonight. 07:06:41 -!- dmoerner [n=dmr@ppp-71-139-15-211.dsl.snfc21.pacbell.net] has quit [Remote closed the connection] 07:07:30 -!- elmex [i=elmex@ist.m8geil.de] has quit [Read error: 113 (No route to host)] 07:14:32 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 07:15:40 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 07:15:49 -!- MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has quit ["DOWNLOADING LATEST VERSION OF THE INTERNET"] 07:16:30 dmoerner [n=dmr@ppp-71-139-15-211.dsl.snfc21.pacbell.net] has joined #scheme 07:18:44 elmex [i=elmex@ist.m8geil.de] has joined #scheme 07:27:10 -!- dmoerner [n=dmr@ppp-71-139-15-211.dsl.snfc21.pacbell.net] has quit ["leaving"] 07:27:22 -!- sepult` is now known as sepult 07:34:05 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 07:39:57 dmoerner [n=dmr@ppp-71-139-15-211.dsl.snfc21.pacbell.net] has joined #scheme 07:43:05 -!- dmoerner [n=dmr@ppp-71-139-15-211.dsl.snfc21.pacbell.net] has quit [Client Quit] 07:46:33 HG` [n=wells@xdslgd006.osnanet.de] has joined #scheme 07:55:34 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 07:56:14 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 08:04:24 -!- dnm_ [n=dnm@cpe-69-204-149-14.nycap.res.rr.com] has quit [Client Quit] 08:14:11 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 08:17:49 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 08:21:06 jonrafkind [n=jon@98.202.86.149] has joined #scheme 08:22:09 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 08:35:25 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 09:04:07 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["Lost terminal"] 09:18:11 Edico [n=Edico@unaffiliated/edico] has joined #scheme 09:23:12 -!- kilimanjaro [n=kilimanj@70.116.95.163] has quit ["Leaving"] 09:26:29 maodun [n=stopgo@114.241.170.210] has joined #scheme 09:27:41 trying to build scheme 372 on arch and getting an error. google only turns up this: http://paste.lisp.org/display/44590 any ideas? 09:33:38 Scheme 372? Scheme in 372 hours? 09:34:15 whoops, sorry, mzscheme version 372 09:43:38 -!- HG` [n=wells@xdslgd006.osnanet.de] has quit [Client Quit] 09:47:54 wingo [n=wingo@67.Red-79-156-145.staticIP.rima-tde.net] has joined #scheme 09:48:59 -!- maodun [n=stopgo@114.241.170.210] has left #scheme 09:54:04 Why build such an old version? 09:55:22 maodun [n=stopgo@114.241.170.210] has joined #scheme 10:02:48 ment [i=thement@ibawizard.net] has joined #scheme 10:10:08 -!- danfowler1 [n=DFowler@ip-66-9-231-226.autorev.intellispace.net] has quit [Read error: 104 (Connection reset by peer)] 10:11:06 oh, nm 10:11:07 -!- maodun [n=stopgo@114.241.170.210] has left #scheme 10:12:27 danfowler [n=DFowler@ip-66-9-231-203.autorev.intellispace.net] has joined #scheme 10:30:53 danfowler1 [n=DFowler@ip-66-9-231-203.autorev.intellispace.net] has joined #scheme 10:30:58 -!- danfowler [n=DFowler@ip-66-9-231-203.autorev.intellispace.net] has quit [Read error: 104 (Connection reset by peer)] 10:41:22 -!- danfowler1 [n=DFowler@ip-66-9-231-203.autorev.intellispace.net] has quit [Read error: 104 (Connection reset by peer)] 10:41:39 danfowler [n=DFowler@ip-66-9-231-203.autorev.intellispace.net] has joined #scheme 10:52:45 slom_ [n=slom@pD9EB3EC0.dip.t-dialin.net] has joined #scheme 10:59:03 masm [n=masm@bl11-78-106.dsl.telepac.pt] has joined #scheme 10:59:04 dfeuer [n=dfeuer@wikimedia/Dfeuer] has joined #scheme 10:59:04 kazzmir [n=kazzmir@98.202.86.149] has joined #scheme 11:05:41 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 11:42:53 jewel_ [n=jewel@dsl-242-139-84.telkomadsl.co.za] has joined #scheme 11:56:52 nvteighen [n=nvteighe@160.Red-88-23-11.staticIP.rima-tde.net] has joined #scheme 11:56:57 hi! 11:59:47 foof` [n=user@dn157-046.naist.jp] has joined #scheme 12:01:48 -!- lde [n=nnnuser@184-dzi-2.acn.waw.pl] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- sstrickl [n=sstrickl@c-76-119-235-127.hsd1.ma.comcast.net] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- igraltist [n=jens@kasten-edv.de] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- foof [n=user@dn157-046.naist.jp] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- m811 [n=user@84-50-207-42-dsl.est.estpak.ee] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- Kusanagi [n=Lernaean@unaffiliated/kusanagi] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- Leonidas [n=Leonidas@unaffiliated/leonidas] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- klutometis [i=klutomet@pdpc/supporter/active/klutometis] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- certainty [n=david@alpha.d-coded.de] has quit [simmons.freenode.net irc.freenode.net] 12:01:48 -!- chandler [n=n@opendarwin/developer/chandler] has quit [simmons.freenode.net irc.freenode.net] 12:02:08 -!- xian [i=xian@pdpc/supporter/active/xian] has left #scheme 12:03:08 klutometis [i=klutomet@klutometis.wikitex.org] has joined #scheme 12:03:08 igraltist [n=jens@kasten-edv.de] has joined #scheme 12:03:21 certainty [n=david@alpha.d-coded.de] has joined #scheme 12:06:32 Kusanagi [n=Lernaean@24-107-112-153.dhcp.stls.mo.charter.com] has joined #scheme 12:10:47 chandler [n=n@new.unmutual.info] has joined #scheme 12:10:51 Leonidas [n=Leonidas@unaffiliated/leonidas] has joined #scheme 12:11:11 m811 [n=user@84-50-207-42-dsl.est.estpak.ee] has joined #scheme 12:11:15 -!- chandler is now known as Guest76834 12:11:51 -!- Guest76834 is now known as chandler 12:13:38 arcfide [n=arcfide@adsl-99-14-210-197.dsl.bltnin.sbcglobal.net] has joined #scheme 12:18:02 -!- nvteighen [n=nvteighe@160.Red-88-23-11.staticIP.rima-tde.net] has left #scheme 12:20:28 Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 12:32:46 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 12:35:59 -!- slom_ [n=slom@pD9EB3EC0.dip.t-dialin.net] has quit [Remote closed the connection] 12:41:31 Vinnipeg [n=barbastr@95.84.1.99] has joined #scheme 12:42:29 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 12:55:40 borism [n=boris@195.50.199.137] has joined #scheme 12:56:45 HG` [n=wells@xdslen238.osnanet.de] has joined #scheme 12:56:52 Guest957 [n=kenjin@221.162.108.236] has joined #scheme 12:59:36 -!- borism_ [n=boris@195-50-206-23-dsl.krw.estpak.ee] has quit [Read error: 145 (Connection timed out)] 12:59:41 dsmith [n=dsmith@cpe-173-88-196-177.neo.res.rr.com] has joined #scheme 13:01:16 -!- Guest957 [n=kenjin@221.162.108.236] has left #scheme 13:08:40 -!- Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has quit ["Leaving..."] 13:12:13 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 13:14:02 jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 13:18:00 Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 13:19:55 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 13:30:17 -!- HG` [n=wells@xdslen238.osnanet.de] has quit [Client Quit] 13:32:56 -!- Vinnipeg [n=barbastr@95.84.1.99] has left #scheme 13:35:22 -!- proqesi [n=user@unaffiliated/proqesi] has quit [Read error: 145 (Connection timed out)] 13:44:25 -!- proq [n=user@38.100.211.40] has quit [Read error: 110 (Connection timed out)] 13:54:30 -!- jimt [n=jim@202.27.212.33] has quit [Read error: 104 (Connection reset by peer)] 13:54:43 jimt [n=jim@202.27.212.33] has joined #scheme 14:02:22 -!- Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has quit ["Leaving..."] 14:05:27 -!- foof` is now known as foof 14:13:28 reprore_ [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 14:16:59 -!- reprore_ [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote closed the connection] 14:19:53 reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 14:21:10 Nshag [n=shag@Mix-Orleans-106-3-44.w193-248.abo.wanadoo.fr] has joined #scheme 14:21:57 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 14:26:06 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 14:26:26 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 14:29:51 -!- reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Read error: 104 (Connection reset by peer)] 14:36:34 Narrenschiff [n=ritchie@mo-rsmitha21.op.umist.ac.uk] has joined #scheme 14:44:53 sepult` [n=user@xdsl-87-78-103-117.netcologne.de] has joined #scheme 14:47:21 -!- sepult` [n=user@xdsl-87-78-103-117.netcologne.de] has quit [Read error: 104 (Connection reset by peer)] 14:48:55 Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 14:49:23 -!- Sveklo1 is now known as Sveklo 14:57:57 -!- Sveklo [n=sveklo@cs181131.pp.htv.fi] has quit [] 14:58:24 Sveklo [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 15:00:09 -!- sepult [n=user@xdsl-87-78-25-37.netcologne.de] has quit [Connection timed out] 15:01:14 dysinger [n=dysinger@71.20.35.99] has joined #scheme 15:20:34 abbe [n=faria@box.of.abbe.who.is.a.member.of.pirateparty.in] has joined #scheme 15:20:46 Hi all 15:22:14 I'm having an issue understanding scheme code. 15:22:17 abbe pasted "issue" at http://paste.lisp.org/display/85439 15:22:58 *offby1* nods 15:23:01 can anyone tell me, why (make-joint...) is return <#:procedure:current-balance> 15:23:10 s/turn/turning/ 15:23:44 because ... that's what it's supposed to do :) 15:23:49 what did you expect? 15:24:07 offby1: I expect it to return 'dispatch'. 15:24:14 what exactly is "dispatch"? 15:24:37 (I'm doing the "Socratic Method" thing here; let me know if it's annoying) 15:24:45 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 15:25:12 have you noticed that the output of (make-account) is also a procedure? 15:25:12 I mean dispatch is the function, which (make-account...) returns and is actually a switch function. 15:25:20 that's right. 15:25:22 So... 15:25:44 I'm guessing that somehow you're convinced that <#:procedure:current-balance> is something _else_. 15:25:48 yes, so in make-joint, I'm trying to return a new account with previous balance and new password, (make-account bal new-pw) 15:25:54 that's right 15:26:15 the result of (make-account...) should also be another 'dispatch' 15:26:48 I don't think I'm evaluating the returned 'dispatch' procedure. 15:27:15 don't know what you mean by that 15:27:39 I don't offhand see anything wrong with that code, although as I run it, it's always complaining about "Incorrect password"; I don't know if that's its fault, or mine. 15:28:09 (if (number? n) (make-account...) n) => OR "Incorrect password" 15:28:24 thats what I expect from the code. 15:28:24 *offby1* suspects the "eq?" on line 11 should instead be "equal?" 15:28:57 abbe: perhaps you could write a little failing test, that would make your expectations clear ... since I don't understand your problem 15:28:59 offby1: (make-account...) works. 15:29:15 sepult` [n=user@xdsl-87-78-103-117.netcologne.de] has joined #scheme 15:29:44 offby1: okay, can you explain me, why according to you it should return ? 15:31:21 (make-account bal new-pw) should return a 'dispatch' procedure. 15:31:36 -!- sepult` is now known as sepult 15:31:42 15:31:47 Either I misspoke, or you misunderstood me: I agree that (make-account bal new-pw) should return a 'dispatch' procedure. 15:31:53 and in fact, it does. 15:32:01 now, "make-joint" looks strange to me. 15:32:22 what is so strange about it ? 15:32:36 hm, never mind 15:32:42 well. 15:33:19 ok, I see two things in your paste that I think are wrong. 15:33:20 Consider the bank account objects created by make-account, with the password modification described in exercise 3.3. Suppose that our banking system requires the ability to make joint accounts. Define a procedure make-joint that accomplishes this. Make-joint should take three arguments. The first is a password-protected account. The second argument must match the password with which the account was defined in order for the make 15:33:21 -joint operation to proceed. The third argument is a new password. Make-joint is to create an additional access to the original account using the new password. For example, if peter-acc is a bank account with password open-sesame, then (define paul-acc (make-joint peter-acc 'open-sesame 'rosebud)) will allow one to make transactions on peter-acc using the name paul-acc and the password rosebud. 15:33:27 gaah 15:33:32 I have a copy of SICP, thanks :) 15:33:33 ^^^ thats the original exercise fromS ICP 15:33:46 :) 15:33:55 the first problem is (as I said before) the use of "eq?" on line 11; I think it should be "equal?" 15:34:09 the second is line 21 -- (let ((bal (old-acc old-pw 'balance))) 15:34:21 I think you need an extra set of parens, so that it should read (let ((bal ((old-acc old-pw 'balance)))) 15:34:31 with those two changes, it's working fine for me. 15:34:43 (but you should really be writing tests as you go!) 15:35:05 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 15:35:21 note that this is a fairly strange style of programming ... which, if I recall correctly, is the entire point of the exercise 15:36:44 -!- Sveklo [n=sveklo@cs181131.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 15:36:57 okay, I agree with the change you suggest in line 21 :), not sure about line 11, as I've not reached that point yet. 15:37:18 well, I kept getting complaints about an incorrect password. 15:37:36 also, in my scheme at least: 15:37:37 offby1: even after entering open-sesame ? 15:37:43 rudybot: eval (eq? "fred" "fred") 15:37:44 *offby1: your scheme sandbox is ready 15:37:45 *offby1: ; Value: #f 15:37:47 but 15:37:49 rudybot: eval (equal? "fred" "fred") 15:37:50 *offby1: ; Value: #t 15:39:31 Sveklo [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 15:41:34 rudybot: (define (make-account balance password) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds")) (define (deposit amount) (set! balance (+ balance amount))) (define (current-balance) balance) (define (dispatch p m) (if (eq? p password) (cond ((eq? m 'withdraw) withdraw) ((eq? m 'deposit) deposit) ((eq? m 'balance) current-balance) (else (error "ERR" m))) 15:41:35 abbe: eh? Try "rudybot: help". 15:41:35 "Inc")) dispatch) (define (make-joint old-acc old-pw new-pw) (let ((bal (old-acc old-pw 'balance))) (if (number? bal) (make-account bal new-pw) bal))) (make-joint (make-account 200 'o1) 'o1 'o2) 15:42:39 unfortunately, IRC broke your line in half. 15:43:11 also, you forgot to say "eval", but I doubt that'd have helped. 15:43:34 rudybot: eval (define (m-a balance password) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds")) (define (deposit amount) (set! balance (+ balance amount))) (define (current-balance) balance) (define (dispatch p m) (if (eq? p password) (cond ((eq? m 'withdraw) withdraw) ((eq? m 'deposit) deposit) ((eq? m 'balance) current-balance) (else (error "ERR" m))) "In 15:43:34 abbe: your sandbox is ready 15:43:34 abbe: error: eval:1:414: read: expected a closing '"' 15:43:34 c")) dispatch) (define (m-j o-a o-p n-p) (let ((bal (o-a o-p 'balance))) (if (number? bal) (m-a bal n-p) bal))) (m-j (m-a 200 'o1) 'o1 'o2) 15:44:01 I think you're stuck. 15:44:34 heh, I see you're using the same crude compression that web sites use on javascript. 15:44:45 Renaming identifiers and eliminating most whitespace 15:45:44 rudybot: eval (define (m-a b password) (define (w amount) (if (>= b amount) (begin (set! b (- b amount)) b) "Insufficient funds")) (define (d amount) (set! b (+ b amount))) (define (current-b) b) (define (dispatch p m) (if (eq? p password) (cond ((eq? m 'w) w) ((eq? m 'd) d) ((eq? m 'b) current-b) (else (error "ERR" m))) "Inc")) dispatch) (define (make-joint old-acc old-pw new-pw) (let ((bal (old-acc old-pw 'b))) (if (number? b 15:45:44 abbe: error: eval:1:407: read: expected a `)' to close `(' 15:45:45 al) (m-a bal new-pw) bal))) (make-joint (m-a 200 'o1) 'o1 'o2) 15:45:47 fuck you 15:46:04 If only rudybot could eval a lisppaste! 15:46:10 yeah yeah 15:46:18 I've never actually seen that work, and suspect that it doesn't. 15:46:25 rudybot: init http://paste.lisp.org/display/85439 15:46:26 *offby1: error: make-evaluator: expecting a single `module' program; got more than a single expression 15:46:29 yep 15:46:39 rudybot: init http://paste.lisp.org/display/85439/raw 15:46:39 chandler: error: make-evaluator: expecting a single `module' program; got more than a single expression 15:46:53 actually I think last time I tried this, the bot wound up in an endless loop :-( 15:47:21 chandler pasted "does this work?" at http://paste.lisp.org/display/85440 15:47:32 rudybot: init http://paste.lisp.org/display/85440/raw 15:47:33 chandler: your "http://paste.lisp.org/display/85440/raw" sandbox is ready 15:47:40 ooh 15:47:46 go on 15:48:07 Well, the display didn't go anywhere, so I should put a definition in there. 15:48:11 ayup 15:48:15 might's well just copy abbe's stuff 15:48:23 offby1: eval (make-joint (make-account 200 'o1) 'o1 'o2) 15:48:35 rudybot: eval (make-joint (make-account 200 'o1) 'o1 'o2) 15:48:35 abbe: error: reference to undefined identifier: make-joint 15:48:44 yeah, he's the bot; I'm the human 15:48:56 chandler pasted "abbe's code, with #lang scheme header" at http://paste.lisp.org/display/85441 15:48:57 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 15:49:05 abbe: Roll your own damned joint 15:49:06 ... or not. let's try again! 15:49:24 rudybot: eval (define (m-a b pw) (define (w amount) (if (>= b amount) (begin (set! b (- b amount)) b) "Insufficient funds")) (define (d amount) (set! b (+ b amount))) (define (current-b) b) (define (di p m) (if (eq? p pw) (cond ((eq? m 'w) w) ((eq? m 'd) d) ((eq? m 'b) current-b) (else (error "ERR" m))) "Inc")) di) (define (mj old-acc o-p n-p) (let ((bal (old-acc o-p 'b))) (if (number? bal) (m-a bal n-p) bal))) (mj (m-a 200 'o1 15:49:25 abbe: error: eval:1:405: read: expected a `)' to close `(' 15:49:25 ) 'o1 'o2) 15:49:30 chandler pasted "MORE CORRECT" at http://paste.lisp.org/display/85442 15:49:41 Gosh darnit. I can't seem to get it together this morning. 15:49:42 rudybot: init http://paste.lisp.org/display/85442 15:49:42 *offby1: error: make-evaluator: expecting a single `module' program; got more than a single expression 15:49:43 #lisp scheme?! 15:49:56 chandler: your swearing is sub-par, too 15:50:23 rudybot: init http://paste.lisp.org/display/85443 15:50:23 *offby1: error: program:31:8: read: unbalanced `|' 15:50:27 Yeah, with great +o comes great bowlderization, I guess. 15:50:30 rudybot: init http://paste.lisp.org/display/85444 15:50:31 *offby1: error: program:31:8: read: unbalanced `|' 15:50:41 *offby1* wonders what's at those URLs, anyway 15:50:41 -!- ski_ [n=md9slj@remote1.student.chalmers.se] has quit [Remote closed the connection] 15:50:44 rudybot: eval (define (m-a b pw) (define (w am) (if (>= b am) (begin (set! b (- b am)) b) "IF")) (define (d am) (set! b (+ b am))) (define (c-b) b) (define (di p m) (if (eq? p pw) (cond ((eq? m 'w) w) ((eq? m 'd) d) ((eq? m 'b) c-b) (else (error "ERR" m))) "Inc")) di) (define (mj o-a o-p n-p) (let ((bal (o-a o-p 'b))) (if (number? bal) (m-a bal n-p) bal))) (mj (m-a 200 'o1) 'o1 'o2) 15:50:44 abbe: ; Value: # 15:50:46 chandler pasted "last try!" at http://paste.lisp.org/display/85443 15:50:49 dzhus [n=sphinx@95-24-179-206.broadband.corbina.ru] has joined #scheme 15:50:50 rudybot: init http://paste.lisp.org/display/85443 15:50:51 offby1: see that 15:50:51 *offby1: error: make-evaluator: expecting a single `module' program; got more than a single expression 15:50:53 heh 15:50:56 rudybot: init http://paste.lisp.org/display/85443/raw 15:50:57 rudybot: init http://paste.lisp.org/display/85443/raw 15:50:57 *offby1: your "http://paste.lisp.org/display/85443/raw" sandbox is ready 15:50:58 chandler: your "http://paste.lisp.org/display/85443/raw" sandbox is ready 15:50:59 ooooh 15:51:01 Ooh. 15:51:05 why it is return c-b ? 15:51:05 rudybot: eval (make-account "fred" 123) 15:51:05 *offby1: ; Value: # 15:51:09 abbe: look! 15:51:14 rudybot: eval (define A (make-account "fred" 123)) 15:51:21 s/turn/turning/ 15:51:25 rudybot: eval ((A 'balance)) 15:51:25 *offby1: error: procedure dispatch: expects 2 arguments, given 1: balance 15:51:31 rudybot: eval ((A 'balance "fred")) 15:51:31 *offby1: error: procedure application: expected procedure, given: "Incorrect password" (no arguments) 15:51:39 see. 15:51:45 s/eq?/equal?/ 15:51:46 rudybot: init http://paste.lisp.org/display/85359/raw 15:51:47 chandler: your "http://paste.lisp.org/display/85359/raw" sandbox is ready 15:51:57 specify password as quoted symbol, not as a string 15:52:19 like i specified in (m-a 200 'o1), o1 is the password. 15:52:25 rudybot: eval (define c ((coroutine yield (n) (let loop ((n n)) (yield n) (loop (+ n 1)))) 0)) 15:52:25 chandler: ; stdout: "{1 2 3 () ()}" 15:52:26 abbe: I think it returned c-b because of the lack of parentheses I mentioned earlier. 15:52:38 Hm. The stdout is delayed to the first eval. 15:52:39 rudybot: eval c 15:52:40 chandler: ; Value: # 15:52:43 rudybot: eval (c) 15:52:43 chandler: ; Value: 0 15:52:45 rudybot: eval (c) 15:52:46 chandler: ; Value: 1 15:52:47 abbe: ah, with symbols, then eq? is fine. 15:52:49 Yay! 15:52:55 offby1: This makes me very, very happy. 15:53:01 thank eli 15:53:03 he wrote most of that 15:53:17 The stdout from the init should be displayed immediately, though. 15:53:19 .oO("coroutine"? "yield"?) 15:53:22 Should I pester eli about that? 15:53:29 or me 15:53:34 neither of us is likely to do much about it :) 15:53:36 rudybot: source 15:53:36 *offby1: http://github.com/offby1/rudybot/tree/4c4cd42ccc90a799e1873ecacfc6f0ca3da8510c 15:53:38 have at it 15:53:43 okay, got it... offby1, thanks :) 15:53:56 It's a litle example of a partial coroutine implementation using call/cc that I hacked up in 10 minutes for synx, who was having trouble with it. 15:53:57 chandler: if your "pesterment" takes the form of a working patch, I'd be happy to apply it. 15:54:01 Nay, _grateful_ 15:54:05 sorry for this confusion :( 15:54:15 abbe: no problem, that's what this channel is for, after all 15:54:39 The whole 'git' thing makes that very unlikely. 15:54:48 aw, you're letting eli intimidate you 15:54:52 anyway, an ordinary patch is fine 15:54:59 surely you're capable of downloading the source. 15:55:01 btw, is there any slime like thing for scheme in Emacs ? atm, i'm using inferior-scheme process to eval my scheme code. 15:55:07 Ah, there is a download button. 15:55:14 there is indeed. 15:55:32 abbe: I think Riastradh has written a slime-like thing for Scheme48 15:55:34 for drscheme, i'm running amd64 distro, so no mit-scheme for me. 15:55:37 OK, I'll look at it. Is this sufficient to run a rudybot instance in a relatively recent version of PLT (say, 4.2), or do I need additional things? 15:55:43 abbe: but roughly speaking, the answer is "no" 15:55:57 chandler: I don't _think_ you need anything else ... 15:56:00 okay 15:56:03 There are a few, incomplete Scheme SWANK backends in the SLIME source. 15:56:11 there are some PLaneT packages, but you should get those automagically 15:56:13 There is also another environment that jao is writing, but the name escapes me at the moment. 15:56:23 OK. I'll give it a shot, then. 15:56:28 chandler: one or two people other than me have been able to get rudybot running 15:57:17 I think I'd like to get it set up so that I can just hand rudybot a paste number, and it will do the rest. 15:57:35 jao's thing is geiser, IIRC. 15:57:46 Ah, that's it. 15:57:50 *eli* 's trying to figure out if there was a question there. 15:58:13 chandler: teach it how to modify URLs, I guess. like, with paste.lisp.org, it needs to append 'raw', etc. 15:58:15 A question about geiser? I was really answering abbe's question. 15:58:25 thar she blows 15:58:37 No, a question related to something I did to rudybot. 15:58:40 offby1: Well, ideally I'd like to just say "rudybot: init-with-paste 95359" or similar. 15:58:52 That should be nearly trivial. 15:58:54 you mean, it'd assume just one paste site? 15:58:58 yeah, sounds trivial 15:59:13 I guess? Maybe it should be init-lisppaste or so. 15:59:27 up to you! It's your patch! Go wild! 15:59:32 A little more complicated would be auto init-ing from your last paste. 15:59:42 Contrary to the DVCS propaganda, it does matter what upstream will accept :-) 15:59:44 a SMOWP 16:00:03 chandler: true, but I'm pretty easy 16:00:09 abbe: You should be able to run MIT Scheme on a 64-bit Linux. 16:00:30 rindolf [n=shlomi@bzq-219-139-216.static.bezeqint.net] has joined #scheme 16:00:31 chandler: they released 64bit packages ? 16:00:32 abbe: Most x86-64 distributions include or have an optional package for a set of 32-bit libraries. 16:00:35 Hi all. 16:00:37 No, but that shouldn't stop you. 16:00:52 I don't use 32bit libs. 16:01:10 That's not a technical problem, then, but a self-imposed restriction. 16:01:11 nor I have them. 16:01:46 yes, like I don't use non-free software :). 16:02:01 In order to not spam this channel, we're discussing the mission statement (but with some code) for Spark - my groovy dialect of Lisp which aims to make it popular and in production everywhere on ##programming . Join and I'll give you a URL. 16:02:19 heh 16:02:44 *gnomon* chuckles 16:03:48 rindolf: Thanks for the announcement. I'm sure that by designing a new dialect of Lisp despite not knowing what `dynamic-wind' was until yesterday, you will find the same willfully ignorant mode of design that led to other currently popular languages, and will thus be successful beyond your wildest dreams. 16:04:15 abbe: I'm not sure I understand the reasoning behind not installing the 32-bit compatibility libraries, though. 16:04:30 good day 16:04:50 It seems like an awfully arbitrary reason to not run good, working software. 16:05:07 chandler: I'll reply to it on ##programming if you want. 16:05:37 Go for it. I won't be there. 16:06:18 chandler: I discuss it in my document. 16:06:22 G'day, wingo! 16:06:25 chandler: would you like a link? 16:07:08 No. 16:07:15 One link is always better than no link. One can always not use it. 16:07:18 chandler: fair enough. 16:07:39 I just prefer to stay 64-bit only. And I hope authors will port MIT Scheme to AMD64 if people ask for it. 16:08:06 The question is how much will discussing this document (which mentions Scheme but isn't about Scheme) acceptable here? 16:08:51 If I parsed the question correctly, it's not. You've already pointed people at another channel; I assume that anyone who is interested has joined by now. 16:09:08 Ok, got you. 16:14:27 -!- masm [n=masm@bl11-78-106.dsl.telepac.pt] has quit ["Leaving."] 16:19:37 assembly is hard, let's go shopping 16:20:28 hell, even shopping is hard. 16:20:38 *offby1* instead chooses to sit in a pile of his own filth 16:21:22 :-) 16:22:07 offby1++ 16:23:04 -!- dysinger [n=dysinger@71.20.35.99] has left #scheme 16:23:41 -!- Guest59650 [i=me@gateway/gpg-tor/key-0x9C9AAE7F] has quit [Remote closed the connection] 16:24:18 there was a time when a fellow would have been reviled for that. 16:24:23 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 16:24:24 Thank God we live in an enlightened age 16:30:45 -!- jewel_ [n=jewel@dsl-242-139-84.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 16:32:59 -!- abbe [n=faria@box.of.abbe.who.is.a.member.of.pirateparty.in] has quit [] 16:33:57 are there native-compiling schemes out there that use DWARF metadata? 16:37:52 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Read error: 104 (Connection reset by peer)] 16:41:43 wingo, what is DWARF metadata? 16:42:00 I'm picturing genealogical charts pounded out of raw iron, and lots of long beards. 16:42:38 gnomon: http://dwarfstd.org/ 16:43:17 That URL is almost as bad as www.ExpertSexChange.com 16:44:13 -!- rindolf [n=shlomi@bzq-219-139-216.static.bezeqint.net] has left #scheme 16:45:16 sleepydog [n=user@64.252.12.149] has joined #scheme 16:45:36 dzhus89 [n=sphinx@95-24-185-234.broadband.corbina.ru] has joined #scheme 16:47:54 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 16:48:13 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 16:53:35 wow 16:53:45 (@ dwarf stds) 16:54:33 They should also document an older standard on that site, so they could get the URL http://stabsdwarfstds.org/ 16:55:02 If only it were SCABS 16:55:11 Lukasz_ [n=Lukasz@68.36.216.168] has joined #scheme 16:55:12 Relatedly, something unknown on my linux box keeps dropping .turd files all over the place. 16:55:47 -!- dzhus [n=sphinx@95-24-179-206.broadband.corbina.ru] has quit [Nick collision from services.] 16:55:53 -!- dzhus89 is now known as dzhus 16:55:54 -!- Lukasz_ [n=Lukasz@68.36.216.168] has quit [Client Quit] 16:57:31 check for processes named "puppy" 16:58:18 suppose i'll need to rub its PID in it, eh 16:59:49 we're a sophisticated bunch around here. A regular Algonquin Round Table 17:00:58 elias` [n=c@cs78208074.pp.htv.fi] has joined #scheme 17:11:16 -!- borism [n=boris@195.50.199.137] has quit [Read error: 145 (Connection timed out)] 17:11:38 sstrickl [n=sstrickl@nomad.ccs.neu.edu] has joined #scheme 17:12:15 attila_lendvai [n=ati@adsl-89-134-4-53.monradsl.monornet.hu] has joined #scheme 17:24:49 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 17:28:13 ... I just typed `locate turd` and it found "Caturday". :| 17:28:38 Anyway, the culprit is--what else--MacPorts. MACPOOOORTS! 17:30:07 /usr/lib64/openoffice.org/share/gallery/www-graf/turdown.gif 17:30:19 Slightly better: /usr/share/texmf/omega/ocp/omega/turduuni.ocp 17:30:27 pemleco [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 17:30:55 ..../twisted/spread/sturdy.py 17:31:06 Oh, and the python directory is full of shit. 17:31:09 ok, it's a meme: /home/erich/live-bot/userinfo.db/t/thissaturday 17:31:22 rudybot: seen thissaturday 17:31:22 *offby1: thissaturday was seen joining in/on :#scheme four days, four hours ago, and then thissaturday was seen quitting in/on 77-96-143-125.cable.ubr06.pres.blueyonder.co.uk four days, three hours ago, saying "Client Quit" 17:31:40 rudybot, your internals are showing 17:31:40 zbigniew: eh? Try "rudybot: help". 17:32:05 zbigniew: shh, don't make him self-conscious 17:33:13 (Obviously, it wasn't a linux box, for you later log archeologists. I misremembered incorrectly, as it were.) 17:34:30 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 17:34:39 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 17:37:15 -!- Sveklo [n=sveklo@cs181131.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 17:46:33 I thought that MIT Scheme did compile to 64-bit using the C backend? 17:46:46 It doesn't do native code compilation using its compiler, but the C backend should work pretty well. 17:51:15 I really hope that Riastradh's parser combinators continue to be fast enough for useful work, because I really love the ability to combine and switch out arbitrary parts of my parsers for different libraries. 17:51:42 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit ["Leaving."] 18:01:19 -!- sepult [n=user@xdsl-87-78-103-117.netcologne.de] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 18:05:40 XTL [i=t6haha00@rhea.oamk.fi] has joined #scheme 18:28:52 hm. do any native-compiling schemes implement an instruction-level or source-level stepper? 18:30:18 DrScheme might 18:30:21 depending on what you mean 18:30:57 proqesi [n=user@unaffiliated/proqesi] has joined #scheme 18:35:22 i mean you generate a bunch of native code for a function, and you might want to step through it, instruction by instruction; or break with the source line changes, etc 18:35:33 things gdb would allow you to do on any executable 18:38:04 oh 18:38:07 not that I know of 18:38:49 Wohoo! Successful parsing of real world data! 18:40:20 wingo: Chez Scheme lets you set break points which can be used to analyze the code, and if you generate the inspector information, most of this data sticks around after compilation, so you can introspect parts of the code. It is also possible to disassemble the object files, and see the literal assembly that is generated. 18:40:58 wingo: On the other hand, if you mean to be able to step through the execution instruction by instruction, then it would be better to use GDB for that. 18:41:05 dum de dum 18:41:52 I find tracing and selective breaking to be more productive than stepping, actually. 18:41:53 duncanm? Where? 18:42:00 hehe 18:42:05 rudybot: seen duncanm 18:42:06 *offby1: duncanm was seen quitting in/on a-chinaman.com three days, sixteen hours ago, saying "lindbohm.freenode.net irc.freenode.net", and then duncanm was seen joining in/on :#scheme three days, sixteen hours ago 18:42:07 arcfide: the problem with that would be that perhaps you have a different calling convention, you probably don't have source info that gdb understands, etc 18:42:28 wingo: Source info, of course not. 18:42:54 wingo: If you want the source information, it would make more sense to use the Scheme debugger, but then you only get to step along the breakpoints that you have set. 18:42:55 arcfide: chez could generate dwarf info :) 18:42:57 jewel_ [n=jewel@dsl-242-139-84.telkomadsl.co.za] has joined #scheme 18:43:06 18:43:32 but i am rapidly coming the the conclusion that gdb is what you do in these cases, without source info; 18:43:36 I do not know what information it uses to generate things, and it may very well do that, but I don't have any inclination to find out. 18:43:42 or otherwise generate code with a lot of instrumentation. 18:44:16 wingo: I came to the conclusion that if you feel the need to go to that level of the code, something is SERIOUSLY wrong -- assuming that you are trying to debug code. 18:44:38 you're probably right :0 18:45:17 *offby1* always assumes wingo is working on guile 18:45:28 wingo ... you're the drummer, right? 18:45:31 *offby1* slaps thigh 18:45:35 bet you haven't heard that one before 18:45:43 i haven't actually! 18:45:48 I had to use MIT Scheme and GDB together once, I never ever want to have to do that again. I have thus managed to write my code in such a way that I can easily check out what I need, and it's very easy to isolate problems. 18:45:51 is there a drummer named wingo? 18:45:59 ringo 18:46:03 ah 18:46:10 yes, then i have heard that 18:46:13 :) 18:46:23 *facepalm* 18:46:37 *offby1* puts wingo's age at 25, max 18:46:51 oh i'm pushing 30 18:47:04 just a few months of youth left ;-) 18:47:04 up hill, both ways 18:47:15 *offby1* never trusts anyone under 30 18:47:18 -!- svf is now known as theRealBuridan 18:50:03 -!- theRealBuridan is now known as svf 18:50:32 Oh? 18:53:27 http://www.international-lisp-conference.org/2009/tutorials#debug 18:57:58 if guile ever does native compilation, i want a debugger that can do that. 19:04:19 wingo: for dealing with jitted code, plt uses libunwind 19:04:40 IIRC, it was tricky to get it to work right for 64 bits. 19:05:20 In any case, I don't know about the details, but if you ask on the plt list, Matthew could probably throw a few pointers at you for the place in the source that sets it up. 19:05:27 ew, i have dealt with libunwind before, and it was tricky 19:05:31 tx eli 19:05:37 wingo: Um, I'm not sure that I go for that debugging. I'd be interested in the benefits over having code compiled with zero optimizations. 19:06:24 optimizations are independent. For example, the (libunwind) backtraces that you get in plt can skip inlined functions etc. 19:06:47 (And, of course, TCO is very bad for debugging, and nobody should use it.) 19:08:14 hehe 19:10:12 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 19:13:56 Cheery [n=cheery@a88-113-54-238.elisa-laajakaista.fi] has joined #scheme 19:14:23 eli: With a compiler, however, that generates compiled code, the source information may not exist for overly optimized code. A JIT ought to be different, methinks. 19:15:05 Is there documents about how foreign function interfaces are getting implemented in dynamic languages? 19:15:17 eli: When I say compiler, I mean a static compiler that generates things in a separate run, as opposed to a JIT compiler, to be specific here. 19:15:51 lde [n=nnnnuser@184-dzi-2.acn.waw.pl] has joined #scheme 19:15:53 Cheery: Most implementations of Scheme with FFIs have their FFI system documented. 19:16:11 arcfide: gcc seems to do fine providing source info 19:16:21 obviously with -O3 it gets wierder 19:16:22 yeah, but they do not describe much about how it works *really*. 19:16:36 arcfide: I'm interested about implementation specifics. 19:16:54 Cheery: some use libffi, some compile assembly directly 19:16:57 that's basically it 19:17:09 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 19:17:15 wingo: except it isn't. :) 19:18:45 obviously I can read the C ABI of a platform I'm porting, but that doesn't tell me how to make it work. 19:19:12 the issue is a GC and FFI 19:19:23 Cheery: does ghuloum's incremental compiler construction paper help? 19:19:41 wrt examples 19:19:45 ooooh.. I were almost forgotten that paper. 19:20:11 I read it again, perhaps there's things I didn't read closely back then. 19:20:40 i am rereading it, and seeing things i didn't before. 19:21:10 wingo: Does GCC store the information about all the macros that it ever expanded or used in the C sources? 19:21:57 arcfide: it records the original source location 19:22:02 that's about as good as you can do 19:22:14 wingo: But does it show you how it exapnded the macro and what values were passed, and so forth? 19:22:26 wingo: So, given that Scheme has a TON of macros in it..... 19:23:30 that's a weak argument imo 19:23:44 wingo: Against what? 19:23:59 against source-level debugging 19:24:16 I wasn't arguing against source level debugging, but most good Schemes I have seen have source-level debugging. 19:24:40 Including showing you where the code is, line numbers, character positions, and even introspecting that code during the debugging process. 19:25:45 What's I'm saying is that you can't expect a Scheme compiler to leave around a lot of information for things that simply don't exist at all in the final compiled form, since they were completely removed and no references to their use or the code they may or may not have generated remain in the final product. 19:25:58 Assuming normal optimizaitons. 19:27:20 If on the other hand, you disable all those optimizations which remove source information or things that could be important (such as disabling inlining) I usually find that my debugging experiences are more productive and helpful in decent Scheme debuggers, and at least as good for the general Scheme cases as GDB. I'm not convinced that the very very detailed Assembly and object code stepping is something worth the effort outs 19:27:20 possible. 19:28:12 Stepping through normal source code is somewhat useful, but you get into the question of when to descend into a call and when not to do so, which is a more troublesome question, IMO, than with C, since the flow isn't at all as linear as C. 19:28:43 Hence, I'm not convinced that these features are SO drastically productive that they warrant the effort it would take to implement them, even though having them would be a cool feature. 19:29:34 More useful in my opinion is the ability to evaluation arbitrary expressions at any stack/continuation/frame level, and introspect all the structures usefully. 19:29:39 Anyways, time to eat. 19:33:25 agreed, for the record. 19:33:58 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Read error: 104 (Connection reset by peer)] 19:34:07 Unanimous! Let's all eat. 19:37:45 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 19:42:31 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [Read error: 110 (Connection timed out)] 19:45:15 masm [n=masm@bl7-206-44.dsl.telepac.pt] has joined #scheme 19:46:46 wingo: ghuloum stops the foreign-call stuff before he has to tackle with garbage collection. 19:48:23 MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has joined #scheme 19:48:51 Cheery: you could save the allocation pointer before doing a foreign call to a global location -- is that your issue? 19:48:59 or is it how do you scan the stack? 19:49:14 or are you worried about the C->scheme case instead 19:50:49 stack scanning isn't an issue I think, or if it is, it appears earlier. 19:52:05 from-C -case also feels rather simple if you do things in a certain way. 19:52:50 Rather the problem is what to pass for C-code? 19:53:40 hmm.. yeah, this is the problem. 19:53:49 the abi doc does not give you enough info? 19:54:32 if you pass GC-collected entries to the C-program, the terror breaks loose. 19:54:40 because of couple things: 19:55:11 - it is unwise to expect C programs store all of their data in the stack. 19:55:46 because of that.. 19:56:00 - GC is unable to trace references from C-world. 19:56:10 therefore.. 19:56:33 - you can't pass direct references to GC-collected objects. 19:58:04 Or, you have to document the assumptions made when you do pass objects. 19:58:12 C is unsafe. Documenting the rules is sufficient. 19:58:47 you still need appropriate tools for dealing with it. 19:59:08 use a level of indirection, e.g. a gc root, when you pass a scheme object to C that may be retained, if your collector is unable to otherwise track it 20:00:15 the stack is usually a sufficient gc root 20:00:59 i think he is saying the object may be copied into malloced storage 20:01:16 -!- jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [] 20:02:20 ah. 20:02:23 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 20:02:41 I'm saying that the pointer to GC-collected object may be copied into malloced storage, and as the next GC collection goes over, the pointer in C-code's heap may start pointing to unappropriate place. 20:03:11 That's where the technique called "pinning" comes in. 20:03:15 of course. well then don't give c gc-managed objects. 20:03:25 wingo: That's not the answer. 20:03:29 langmartin [n=user@exeuntcha.tva.gov] has joined #scheme 20:03:32 chandler: it is an answer :) 20:03:45 or use boehm gc ftw! 20:03:59 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 20:04:15 -!- kilimanjaro [n=kilimanj@70.116.95.163] has quit [Remote closed the connection] 20:04:25 wingo: I'd rather stay at accurate garbage collection 20:04:27 Or you could use a non-copying collector. Or force the C code to go through one level of indirection by giving it a pointer to a pointer to the object. 20:04:53 Ppjet6 [n=ppjet@ABordeaux-156-1-80-174.w90-5.abo.wanadoo.fr] has joined #scheme 20:05:03 the C-code would then be required to understand that one level of indirection, even though it's a good idea. 20:05:06 Cheery: add an indirection pointer so that either a) C sees a static pointer that points to an indirect object that is moved, or b) inform your collector of the object (via a root) so it may be updated on GC 20:05:50 chandler: what's a technique called "pinning"? 20:05:50 a) is what chandler just said 20:06:12 -!- Ppjet6 is now known as Pepe_ 20:06:49 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 20:07:02 Cheery: There's a lot of information available on Google. Basically, objects whose pointers that escape to C are marked, and when the GC collects they are left in place because they are assumed to be alive. 20:07:20 The downside is some risk of heap fragmentation. 20:07:25 L) is for the way you look at me 20:08:18 hmm.. the http://allegrocache.org/support/documentation/current/doc/foreign-functions.htm is recommending to store all values used by both lisp and foreign code in non-garbage-collected space. 20:08:21 -rudybot:#scheme- http://tinyurl.com/me3l7x 20:08:28 chandler: which will not work for stop-copy, i presume 20:09:10 Cherry: Chez Scheme uses a number of things to deal with GC and FFI calls. 20:09:36 Cherry: The usual state is that the collector is suspended during a call into the C side. 20:09:39 zbigniew: Why? It works the same way in a two-space collector as it does in a multi-space generational copying collector, unless there's some factor I'm overlooking. 20:10:04 If objects are to be retained in the C side, then you can use the procedure 'lock-object' to ensure that the garbage collector does not touch them. 20:10:47 There is also the problem of threaded execution, and since Chez does not yet have a threaded GC, potentially, calls into C could suspend collection for all threads. 20:11:23 This is bad, so another mechanism which allows you to "deactivate" a thread exists, which basically means to take it off the list of calls waiting to return before the GC works its magic. 20:11:58 This allows you to make a blocking C call that will remain in the C side for a while, and not run into trouble, assuming that you problem lock objects that must be used by that call, or just don't leave any Scheme objects in that call to be collected. 20:12:14 Cheery: http://allegrocache.org/support/documentation/current/doc/operators/excl/with-pinned-objects.htm 20:12:16 -rudybot:#scheme- http://tinyurl.com/m6agrz 20:12:41 so anything passed to C must be dropped from garbage-collected space. 20:12:45 Cheery: It appears they added that as a compatible version of an interface that was already exposed by SBCL 20:12:54 I don't understand why you say that. 20:13:05 (if you want to go without excepting anything from C-code) 20:13:10 *expecting 20:13:34 Additionally, for objects which come from the C side, usually, they are copied out to other structures when possible, or you are in charge of maintaining them yourself. For doing this, yet another mechanism exists, called guardians. This allows you to automatically free objects that are no longer in use when they would be collected. 20:13:48 Most Schemes that I have seen have similiar mechanisms for handling FFI and GC stuff. 20:14:09 arcfide: are you Chez -scheme maintainer since you know that much about it? 20:14:37 Cheery: No, I have just used it for a while. I also talk with the maintainer, and he shares such things with those who ask. 20:14:45 chandler: i don't know, it seems to me that once your generation fills up, the live data will have to be moved to the next generation, right? thus invalidating any pointers 20:14:51 Cheery: But that should give you one perspective on the issue. 20:14:59 arcfide: yeah, it is giving. :) 20:15:06 zbigniew: You would not move any pinned objects. They would remain in oldspace. 20:15:07 :) 20:15:30 won't that fragment your oldspace? 20:15:40 Yes. That's why I said this carries a risk of heap fragmentation. :-) 20:15:49 Cheery: There really doesn't seem that much more to worry about, since a native code compiler will just make the appropriate jumps or calls in the code to the right place in the shared object where the foreign function entry point exists, and perhaps wrap a little protection around it to ensure that the types going one way are correct. 20:16:02 ah, I see. that doesn't sound very true to stop/copy, though. 20:16:13 chandler: These pinned objects, are they automatically pinned or do you have control over what you pin? 20:16:31 arcfide: that's the way it must be, otherwise FFI would bring hellish amount of problems. 20:16:59 You have control over what you pin. The typical interface is along the lines of (WITH-PINNED-OBJECTS (OBJ1 OBJ2 OBJ3) ...), where the objects are pinned during the dynamic extent of the body. 20:17:02 there's yet one thing that bothers me, but I think I may already know an answer to it based on what I've now read. 20:17:20 Cheery: Unofficially, there is a secret set of undocumented procedures inside the system which one can access that bypass many of the overhead and safety features and are basically like working with a raw katana blade without a hilt, guard or grip of any kind. 20:17:55 callbacks. 20:17:59 chandler: So that's basically like Chez's 'lock-object' mechanism. That seems like a common solution, and a pretty good one at that. 20:18:04 seems to me that if you're going to pin an object, you might as well allocate it outside the purview of the GC 20:18:12 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 20:18:25 zbigniew: You mean make it impossible to unpin it at some time in the future? :-( 20:18:30 Cheery: Yes? 20:18:48 Object pinning seems to be a fundamental part of CLR garbage collectors as well. 20:18:59 clr... calcium, lime, rust? 20:19:06 Common Language Runtime, the .NET VM. 20:19:07 the stuff where you pass lisp-program for C in a procedure call. 20:19:27 obviously, you have to wrap the lisp-program anyway 20:19:40 Well, you have to have some way of safely retaining objects in the foreign side, but you don't want to mess with the GC process more than you have to, so locking objects seems like the best way to do that. 20:19:44 therefore the wrapping happens into C-heap. 20:19:56 Cheery: I think I missed the introduction to your questions. Are you wondering how these things are implemented, or trying to determine if they are implemented? 20:20:21 the first one, second aspect would be easy. :) 20:21:39 that wrapping itself is somehow brought to the GC-collected heap and updated from there. If that gc-collected object goes, the GC can assume that the lisp-program isn't anymore accessible through C. 20:21:40 hkBst [n=hkBst@gentoo/developer/hkbst] has joined #scheme 20:21:42 Cheery: In Chez, you use a 'make-foreign-callable' procedure, which just returns a pointer to the entry point of the procedure. You can this accept this in the C side as a pointer to some function of some given type. There is very little else that needs to be done, accept the usual care that needs to be taken in C. 20:21:54 -!- Narrenschiff [n=ritchie@mo-rsmitha21.op.umist.ac.uk] has quit [] 20:22:36 arcfide: well, this stuff seems like simple stuff anyway, not like anything ppl should make drama about. 20:22:38 arcfide: How is the lifetime of the foreign-callable procedure managed? Is there a function to destroy it? 20:22:43 i am now idly curious about the overhead of maintaining a fragmented heap versus unfragmented stop/copy 20:23:04 Cheery: Normally, if one of these procedures is going to stick around as a callback, you just lock the object, and add an unlock hook when you free whatever resource retained that procedure on the C side. 20:23:07 zbigniew: that's a cost from using C-libraries anyway. 20:23:40 chandler: The object sits around just like anything else in GC, so if you don't lock it, you could potentially have a major segfault. 20:23:47 arcfide: yep, and you have to manually operate that unlock hook. 20:24:10 Cheery: Well, it's pretty easy to manage that, since you have to handle Freeing manually in C anyways. You can unlock objects from C. 20:24:23 zbigniew: OTOH it doesn't seem *that* bad. You just need to arrange so that when an allocation for more bytes than there are between the current allocation pointer and the next pinned object is requested, that the GC will allocate at the next free block of memory past the pinned object. 20:24:23 very true. 20:24:37 You'll need some way of tracking which memory has actually been allocated. 20:24:49 arcfide: anyway, thank you. I think I'm now able to write a proper FFI. 20:25:03 Cheery: One thing you have not mentioned... 20:25:09 antoszka [n=antoszka@unaffiliated/antoszka] has joined #scheme 20:25:15 Cheery: Oh wait, sorry, that's for a different discussion. 20:25:16 :-) 20:25:20 arcfide: I've been trying to mention that and get info that way many times before. 20:25:26 arcfide: Hm. That's interesting, but I guess it works. In SBCL we assume that the callable should exist until it is explicitly destroyed, IIRC. 20:25:44 the trouble is I've never gotten anything when I've been starting the discussion with that. :) 20:26:05 I knew the details and things I had missing though. 20:26:07 chandler: Well, since the C side may block the GC, if the procedure is only going to be used for that single call, there is no reason to lock it or incur the overhead of doing so. 20:26:32 Does Chez have native threads? 20:26:36 Yes. 20:26:49 If one thread is in a foreign call, does it block GC for other threads? 20:26:50 arcfide: been attempting to deal with C-code in my own language implementation couple of times already. I think next time I'll succeed finally. 20:27:25 borism [n=boris@195-50-199-137-dsl.krw.estpak.ee] has joined #scheme 20:27:42 http://www.ccs.neu.edu/home/lth/larceny/notes/note7-ffi.html interesting stuff 20:27:59 chandler: At the moment, yes, unless you tell it not to. The GC is not threaded (though we all wish it were), so you can't block one thread and keep the others open. You either allow GC on all, or GC on none while in the C side. However, it is possible to deactive some threads, and keep others blocking, so that you only have to block for the lifetime of selected threads. 20:28:09 Sorry, for the lifetime of selected calls. 20:29:32 Cheery: What is your language implementation, out of curiosity? 20:29:33 chandler: If it happens that a Scheme thread will remain the foreign side for some time, usually, you make sure the objects are all set, and then disable the thread, which frees the GC from waiting on that thread. This allows other threads to continue being GC'd. 20:30:28 That sounds like a conservative approach. 20:30:32 chandler: it's for interpreted&compiled language that shares few similarities with python. 20:30:32 it starts to sound like mark/sweep, but with much less fragmentation; the question is, when you traverse oldspace during the copy, do you have to check each pointer against a list of pinned objects, or do we have to expend space in each object with a pinned bit 20:30:59 Cheery: Sharing few similiarities with python sounds like a good thing. But perhaps you meant "a few" :-) 20:31:01 chandler: Unfortunately, no one has had the time to implement the threaded GC, so that's pretty much what there is. It works, though. 20:31:15 chandler: It is a good deal better than having no native threads at all. 20:31:20 chandler: yeps. 20:32:13 it's otherwise quite early matter though. I basicly have been working on an interpreter lately. 20:32:20 Though noticing my current tests have started to leak. 20:32:40 therefore feeling compelled to start the project again yet once. 20:33:20 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 20:33:45 chandler: http://bitbucket.org/cheery/wood/wiki/Home here's the wiki. 20:34:08 arcfide: SBCL's GC is stop-the-world, but it can happen even while some threads are in foreign calls. 20:34:13 -!- sstrickl [n=sstrickl@nomad.ccs.neu.edu] has quit ["rcirc on GNU Emacs 23.0.60.1"] 20:34:27 though right now I feel I'm starting to have implementation specifics in place, but I have to rework on the syntax. 20:34:40 Does it have syntactic abstraction? 20:35:03 copumpkin [n=pumpkin@dhcp-212-238.cs.dartmouth.edu] has joined #scheme 20:35:25 chandler: I attempt to not introduce it in terms of macros. 20:35:36 but otherwise I go for it. :) 20:36:40 Dark-Side [n=dark-sai@ip-155.net-82-216-217.roubaix.rev.numericable.fr] has joined #scheme 20:36:42 hi ! 20:36:47 Cheery: I'm not sure what that means. You could call it something other than "macros", but either you have it or you don't. 20:36:49 (if you meant the thing that pops up when I put the "syntactic abstraction" into google. 20:37:16 i need your help with : http://paste.pocoo.org/show/134500/ 20:37:23 do you know why i get such an error ? 20:37:47 yes--you do not understand scheme 20:38:00 well, that might be related :-° 20:38:10 chandler: In SBCL, does that mean you have to pin all objects used by the foreign side, since they could get collected mid way through execution of the foreign code? 20:38:14 but srsly, i really dont understand here :D 20:38:27 so, could you please explain me what's happening zbigniew ? 20:38:38 ok, how did you get b in the first place 20:38:44 heh 20:38:54 i read it in a file :-° 20:38:57 Dark-Side: this is actually pretty confusing. 20:39:04 so don't feel bad 20:39:07 (with « read ») 20:39:15 offby1: :) 20:39:16 ok, where did you get the file from -- you had to have gotten this data somewhere 20:39:22 chandler: In Chez, one can usually elect to call the collector if desired, but doesn't, since foreign functions usually have a very small running time. 20:39:28 arcfide: All Lisp-heap objects, yes, with the proviso that the garbage collector is also conservative and scans the C stack for references to objects that will also be treated as pinned. 20:39:34 chandler: well, I assume that what you meant with "syntactic abstraction" is ability to extend the language reasonably with new programming constructs. 20:39:43 Dark-Side: i am asking because the underlying data is wrong 20:39:50 zbigniew: i wrote the file ? 20:39:53 chandler: instead of implementing macros, I do two other things. 20:39:54 This is why I called the Chez approach conservative, in that it favors safety. 20:40:02 chandler: Hrm, is that as effecient? 20:40:09 s/fec/fic/ 20:40:18 oh wait 20:40:20 Dark-Side: your value for b is weird. I'd expect to see (date . "15/08/09"), not ('date . "15/08/09") 20:40:40 Dark-Side: let me ask you then, why did you put a quote before date? 20:40:44 chandler: I can see why it might be more efficient in terms of memory use in certain cases, but the fragmentation risk seems higher. 20:40:49 offby1: spoiler alert 20:41:04 the latter isn't strictly speaking, _wrong_, but it's so unusual as to be almost certainly not what you want. 20:41:05 chandler: first thing is that I avoid implementing syntax-sugar that'd need expansion, therefore there's no difference between a function and a macro. 20:41:23 Cheery: Syntactic abstraction is the ability to extend the syntax of the language reasonably, such as with `syntax-rules'. 20:41:25 zbigniew: to have date as a symbol. well in fact, i should haveo quoted the whole couple 20:41:32 (which i didn't do) 20:41:33 Cheery: Crazy person. Take away our syntactic abstraction like that and we revolt! 20:41:38 Dark-Side: actually, no 20:41:45 hmm. 20:41:53 Dark-Side: if you've just got the stuff in a file, and are merely planning on reading the file, you don't need any quotes at all. 20:41:58 Dark-Side: in fact, since your data is in a file being read by read, you don't need the quote 20:42:01 jinx 20:42:01 quotes are to prevent stuff from being evauluated. 20:42:06 zbigniew: oh :o 20:42:10 chandler: another thing is that I'll introduce some optimizations, I think inline functions in particular are interesting in this place. 20:42:12 arcfide: Well, the typical case is not to pass Lisp objects directly to C frequently, and when doing so, they tend to be large and few. 20:42:14 zbigniew: I'll hand off to you since I'm lazy 20:42:14 ok, that make sens. 20:42:24 offby1: nope, i'm outie 20:42:31 now, hold on thar. 20:42:41 peace brah 20:42:44 chandler: I see, so it seems like Chez and SBCL encourage slightly different Foreign programming paradigms. 20:42:55 hmph 20:43:06 Dark-Side: anyway, nix that quote mark, and see how things go. 20:43:09 arcfide: you won't need to write code in my programming language. :) (I hope it is so) 20:43:23 arcfide: I'd say that's true. The SBCL paradigm tends to be common among Common Lisps, for what it's worth, and maps well to the CFFI paradigm as well. 20:43:33 sepult [n=user@xdsl-87-78-103-117.netcologne.de] has joined #scheme 20:43:46 offby1: well, without the quote it went well :) 20:43:50 chandler: I wonder if Chez's paradigm is common among dynamic Scheme FFIs? 20:44:01 Dark-Side: Welcome to the Light. 20:44:09 Dark-Side: by the way, this is what you expression really looks like: ((quote date) . "15/08/09") 20:44:10 <3 you 20:44:11 :-° 20:44:22 chandler: so.. I guess I don't have syntactic abstraction then. 20:44:25 zbigniew: yeah, I got it. 20:44:30 the repl is being cute 20:44:44 Dark-Side: now, if you wanted to send those forms to "eval", then you'd need a quote. 20:44:50 *arcfide* beats Cheery over the head with a huge stack of Scheme Syntactic Abstraction papers. 20:44:53 rudybot: eval ('date . "15/08/09") 20:44:54 *offby1: error: eval:1:0: application: bad syntax in: ((quote date) . "15/08/09") 20:44:56 offby1: or if you need auto insurance 20:45:00 ow! ow! ow! 20:45:05 but compare! 20:45:08 ? :D 20:45:08 rudybot: eval '(date . "15/08/09") 20:45:08 *offby1: ; Value: (date . "15/08/09") 20:45:12 chandler: I see it as a bad thing to be able to extend the syntax of the language reasonably. Instead I see there's another way solving the problem it solves. 20:45:20 yeah ok, right 20:45:21 Cheery: Inlining is quite distinct from what syntactic abstraction provides - and you can use the latter to provide programmer-level control over the former. 20:45:33 rudybot: eval '('date . "15/08/09") 20:45:34 zbigniew: your sandbox is ready 20:45:34 zbigniew: ; Value: ((quote date) . "15/08/09") 20:45:36 Cheery: It is not a bad thing. It is a level of expresivity for which there is no replacement. 20:45:45 *rudybot* hits offby1 on the head 20:45:48 ow! ow! ow! 20:45:50 rudybot: eval ''(date . "15/08/09") 20:45:50 zbigniew: ; Value: (quote (date . "15/08/09")) 20:46:02 omg :D 20:46:08 rudybot: eval '''''''''''quote 20:46:08 *rudybot* thought zbigniew was outta heah, brah 20:46:08 zbigniew: ; Value: (quote (quote (quote (quote (quote (quote (quote (quote (quote (quote quote)))))))))) 20:46:09 Cheery: What on earth do you think you're doing in #scheme saying things like that? You're likely to get yourself tarred and feathered a good one. 20:46:22 ooh! 20:46:25 zbigniew: why do you do that ? :D 20:46:26 *offby1* heats up some tar 20:46:35 rudybot: come for the quotes, stay for the pie 20:46:35 zbigniew: eh? Try "rudybot: help". 20:46:38 *chandler* plucks some chickens 20:46:42 Dark-Side: well, why do you keep poking at that silly video game, eh? 20:47:00 arcfide: I'm very flammable person so it's may be not good idea to add tar and feathers. 20:47:07 *rudybot* thinks: hey wait: he said 'pie' 20:47:13 (sorry but i didn't understand your last sentence, im french you know) 20:47:20 -!- jewel_ [n=jewel@dsl-242-139-84.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 20:47:24 (why did you mean by « poking » ?) 20:47:31 Dark-Side: your English is excellent, and I was making a stupid joke. 20:47:36 *arcfide* grabs a drum of ethanol, a couple of feather pillows and checks on offby1's tar. 20:47:41 Dark-Side: offby1 is old 20:47:44 what* 20:47:50 offby1: ok :D 20:47:53 by << poking >> I meant: "pressing the buttons" or "manipulating the controls" or just "playing with" 20:48:06 *offby1* reaches for his dentures 20:48:25 zbigniew: you watch yourself, youngster, or you'll wind up like mbishop. 20:48:29 tar cvzf stuffed_Cheery.tar.pillow Cheery* 20:48:37 rudybot: .seen mbishop 20:48:37 *offby1: eh? Try "rudybot: help". 20:48:45 offby1: unemployed, in Greenland? 20:48:56 at the bottom of a well. 20:48:58 these kids today, poking at their video games with quotes 20:49:01 a cautionary tale. 20:49:03 aah, I've just eaten. 20:49:46 chandler: yes, I lose that stuff. Though by getting rid of syntactic abstraction and replacing it with enough of existing expressivity I hope to end up into better programming language. 20:49:48 I need a foot pedal with which I can suppress rudybot's responses, so that when I say "seen mbishop", he will say nothing until I sock-puppet him to say something witty 20:50:47 jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 20:50:57 offby1: I'm sure you find lots of pedal game controllers these days. 20:51:14 oh, you and your guillemets 20:51:23 shouldn't be hard to make evdev daemon that puts such pedal for that use. 20:51:36 -!- jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [Client Quit] 20:51:42 Cheery: Many language designers have made that argument, and many languages have come and gone. Yet Lisp and Scheme remain. 20:52:07 chandler: lisp and scheme remain, yet they do not. 20:52:24 "are you unpoopular"? 20:52:30 Guy Steele once famously stated that with Java, he managed to drag a lot of programmers "halfway to Lisp". He failed to understand Zeno's paradox. 20:53:28 nor greenspun's tenth 20:54:23 because of syntacting abstraction, every lisper and schemer isn't writing lisp or scheme but a slightly small dialect made by themselves. 20:54:34 Cheery: Exactly as it should be. 20:54:45 *wingo* doesn't believe in esperanto either :) 20:55:00 Cheery: Let me give you a practical example. Let's say that I am working with HTML forms. I would like to respond to a HTTP request and do some processing to turn the query or postdata into Scheme objects - in some cases leaving them as strings, and in other cases turning them into integers, records, etc. 20:55:12 (meaning, dialects are good & stuff) 20:55:27 -!- Pepe_ [n=ppjet@ABordeaux-156-1-80-174.w90-5.abo.wanadoo.fr] has quit [Read error: 60 (Operation timed out)] 20:56:11 Cheery: I can define the content of the fields for my form, and then create a syntax which calls a function to process the query and then binds the names of the form elements in the body to the postprocessed objects. 20:57:21 Pepe_ [n=ppjet@ABordeaux-156-1-98-243.w90-5.abo.wanadoo.fr] has joined #scheme 20:57:57 chandler: yes! 20:58:08 macros that allow you to bind identifiers to data are fantastic 20:58:36 arcfide, sorry, my parser-combinator library is not fast. 20:58:53 etpace_ [n=etpace@etpace.eu] has joined #scheme 20:59:15 chandler pasted "syntax mockup" at http://paste.lisp.org/display/85451 20:59:21 I was wondering if anyone here has read the Reasoned Schemer? I'm struggling with a concept and I'm not sure wheres the best place to ask 20:59:50 I haven't read it, but I spent a while with an early version of the code before the book was written. 20:59:56 Go ahead and ask, and if anyone knows, I'm sure they'll answer. 21:00:12 Cheery: That syntax is just a mockup, but I hope you see the idea there. 21:00:38 Riastradh: But it is just so convenient.... 21:01:11 Cheery: Macros are not about being able to add a for loop to your language if you don't have it already. 21:01:34 Macros are about able to write your program as it ought to be written, and then make that work, as if the language was created just so you could write your program the way you wanted to write it. 21:01:41 I don't see what's wrong with being able to add a "for" loop ... 21:01:53 I meant to say, they're not *just* about that. 21:02:01 This conversation has been too long for me to read again! Twenty-five word summary, please! 21:02:02 *offby1* lowers his knife 21:02:15 'Scheme good. Other languages bad'. 21:02:19 ^^ summary 21:02:34 There's no replacement for displacement. 21:02:40 Er, there's no replacement for syntactic abstraction. 21:03:20 chandler: sure there isn't, but I fear it kicks you back in the knees at return. 21:03:21 *Donk* I coulda had a V8! 21:03:34 I don't understand what you mean by that. 21:04:24 well, say you have two software libraries that introduce new syntax, if those syntaxes are conflicting or very similar, doesn't it make your programs confusing to read? 21:04:40 http://paste.lisp.org/display/85452 where == is associationg, the question asks whats the value of this expression -- which is the value of r, aka (x y), so it boils down to understanding conde 21:05:07 now, I'd have thought the answer would be ((split pea) (navy bean)), as x and y are refreshed for every line in conde 21:05:18 cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has joined #scheme 21:05:20 busorry I mean 21:05:22 That is an instance of the Campbell Theorem on Generality, Cheery: Any sufficiently general abstraction can be applied in a way that is hard to understand. 21:05:23 sorry* 21:05:33 Id have thought it would be ((split navy) (pea bean)) 21:05:42 as split and navy are associated with x 21:05:59 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 21:06:08 Riastradh: yeah, that means you are preferred to not use syntactic abstractions in libraries. 21:06:10 but the answer is ((split pea) (navy bean)) -- why? I just can't seem to fathom it 21:06:27 No, Cheery. It means only that syntactic abstraction should be used judiciously. 21:06:40 Cheery: Not in practice, or at least not in my practice. The syntax I just described does not make any other library's syntax difficult to read. It just makes available a group of variable bindings based on the definition of my form type. Inside the body, they are regular variable bindings. 21:06:45 It is as if I had done that myself. 21:07:08 Now, I could write a syntax which completely rearranged my code, and did horrible things to it - but I can shoot myself in the foot with many other tools as well. 21:07:19 People do not go through this level of effort just to shoot their feet. 21:07:41 Hygienic macro systems work to ensure that you have to actually aim at your foot in order to hit it. 21:07:58 I'm just not sure how the "question" and "answers" work in conde.. ((== x bar) #u) doesn't work as all the answers have to succeed as well, so what's the difference between a question and an answer? 21:08:28 -!- Pepe_ [n=ppjet@ABordeaux-156-1-98-243.w90-5.abo.wanadoo.fr] has quit [Read error: 148 (No route to host)] 21:11:06 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 21:11:13 chandler: hmm. I have to agree on that. There's yet one thing I feel worth mentioning. 21:11:16 aack [n=user@a83-161-214-179.adsl.xs4all.nl] has joined #scheme 21:11:38 -!- attila_lendvai [n=ati@adsl-89-134-4-53.monradsl.monornet.hu] has quit ["..."] 21:12:46 since the macros change meaning of the expression, it gives restrictions on how you can use them. If you only have macros for some things, you can't do other things that might be useful, unless you provide separate interface that allows you to go under the macros. 21:13:08 etpace_: Hold on. I am re-remembering this code. 21:13:17 Cheery: I don't understand that at all. 21:13:18 that also means you can't pass macros around, or if you can, it is very restricted. 21:14:07 I think theres something very easy I'm not thinking about, because my mind boggles with having y like that, and the next example is even more confusing :P 21:15:45 etpace_: if I continue my programming hobby any further, I think I'm starting to grow trickery-bags on my belt. 21:15:58 etpace_: I'm trying to remember what #u is. Can you help? 21:16:31 Pepe_ [n=ppjet@ABordeaux-156-1-130-88.w90-5.abo.wanadoo.fr] has joined #scheme 21:17:07 #u is "unsuccessful", and #s is successful 21:17:08 I guess I know what you answer, a good programming practise with scheme does the stuff so that you don't have to abuse macros. 21:17:21 and I think that's true. 21:17:36 so (== #t #f) is #u and run (r) ((== r foo)) is #s 21:17:37 -!- cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has quit ["If technology is distinguishable from magic, it is insufficiently advanced."] 21:17:56 etpace_: OK. 21:19:26 hm. my thoughts are cutting, guessing should get to bed soon. 21:20:59 so when you are using macros, you'd have to be a language-designer yourself, and yet able to see the whole picture of what you are doing in the scope of others. 21:22:21 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 21:22:38 etpace_: OK. The syntax you're using is slightly different from what I was used to. I have the minikanren code, and things are quoted there that are not quoted in your code. 21:22:50 etpace_: Do you understand why (run* (r) (fresh (x y) (anye (all (== 'split x) (== 'pea y)) (all (== 'navy x) (== 'bean y))) (== r (cons x y)))) returns ((split . pea) (navy . bean)) ? 21:23:04 I think it feels better to give a programmer fixed set of syntax he can use rather freely without needing to rely on syntactic abstractions when he needs a bit richer syntax, so that need for syntactic abstractions is reduced. 21:23:26 chandler: you have convinced me that syntactic abstractions aren't terrible idea. 21:23:31 Cheery: The need for syntactic abstractions cannot be reduced to zero. Do you understand why? 21:23:49 No, because I'd have thought x would be with split and bean 21:24:02 chandler: I guess I do, but sure go ahead. 21:24:06 I mean 21:24:07 split and navy 21:24:18 Why is x associated with pea, and not navy? 21:24:32 x is not associated with `pea'. 21:24:51 (split . pea) was unified to `r' with (== r (cons x y)) 21:25:01 hmm 21:25:38 How does the anye work? 21:25:47 chandler: to what I understand, they cannot be reduced away because the preferred syntax is changing while the technology proceeds. 21:25:48 cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has joined #scheme 21:25:49 Cheery: Whatever you provide, it won't be enough. You can provide all of the different and worthwhile syntaxes that anyone has ever created, and the next week you will be missing more. 21:26:15 There is no replacement for syntactic abstraction. If you don't have it, there are things that the programmer can't do. 21:27:09 -!- cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has quit [Client Quit] 21:27:32 hmm... 21:28:04 still I want a rich syntax with rather controllable indentation. 21:28:25 I don't understand what you mean by "rather controllable indentation". 21:29:15 chandler: well, python drops away lot of parentheses by understanding indentation. 21:29:54 I go further at that, denoting that if you have multiline statements, they must be indented, in exchange they lose some separators. 21:30:16 Heres how I think the anye would work (correct me where I fall short): firstly: tries to unify x with split, tries to unify y with pea, refreshes x and y (what does the refreshing mean?), then tries to unify x with navy, y with bean. I'm not really sure what the anye returns, nor how x is now associated with split and pea, even though I can't see the latter unification at all? 21:30:50 chandler: http://bitbucket.org/cheery/wood/src/tip/examples/simple.wood 21:31:45 -!- fishey [n=fisheyss@ool-4573344b.dyn.optonline.net] has quit [Read error: 110 (Connection timed out)] 21:32:07 I believe the current concepts of syntax will be demolished at some point in near-future. I guess that means I have to take explicit care that my syntax can be dropped away when it becomes legacy. 21:32:31 fishey [n=fisheyss@ool-4573344b.dyn.optonline.net] has joined #scheme 21:32:44 ? 21:33:01 Comes the revolution, those parentheses will be the first to go up against the wall? 21:33:46 the major concepts in wood is really the closures and some simple considerable differences to how python does things. 21:34:15 I think it will be going with abstractions as far as you can without syntactic abstraction. 21:35:35 Cheery, wow, will it have variables? 21:37:01 jonrafkind: http://bitbucket.org/cheery/wood/src/tip/examples/ I don't understand the question, but perhaps that directory answers your question. 21:37:37 offby1: I hate parentheses.. a lot. 21:37:56 you use macros a lot because you too hate parentheses a lot. 21:38:08 Cheery, when was the last time you heard a joke and laughed at it 21:39:04 jonrafkind: I guess if I'd see the joke at my writing, I could laugh at it. 21:39:18 surfs up! 21:40:07 I think textual syntax sucks and it's potential has been used up exhaustively by this far. 21:40:43 Cheery: heh, you're in the wrong channel, then. 21:40:47 textual syntax? 21:41:10 sctb [n=sctb@S01060016cbc2d41a.cg.shawcable.net] has joined #scheme 21:41:23 syntax that's build over a sequence of letters layouted in rows and columns. 21:41:45 what is the alternative? 21:42:20 sleepydog: they aren't there yet, but there must be alternatives eventually. 21:42:25 -!- kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has quit [Read error: 110 (Connection timed out)] 21:42:30 -!- sctb is now known as sebell 21:42:41 Only thing I can think of is something like ColorForth 21:43:03 -!- Pepe_ [n=ppjet@ABordeaux-156-1-130-88.w90-5.abo.wanadoo.fr] has quit [Read error: 104 (Connection reset by peer)] 21:43:13 Pepe_ [n=ppjet@ABordeaux-156-1-130-88.w90-5.abo.wanadoo.fr] has joined #scheme 21:45:42 sleepydog: if I'd know the answer to that, I'd be using the alternative already. 21:46:00 I believe such alternative is coming, from five to ten years away. 21:46:32 for now I have to rely on the text. 21:48:13 On what basis? It has been this way for 50 years and I haven't seen or heard of any movement in that direction. Plain text is easily understood by machines and humans. 21:48:57 sleepydog: that's just the thing. 21:49:29 for how long is it possible to improve the expression of text? 21:49:35 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Remote closed the connection] 21:50:56 kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has joined #scheme 21:51:34 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 21:51:44 programming languages are in bad place with plain text because they are always fixed to certain form. 21:52:01 while human languages do not have such restrictions. 21:52:26 jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has joined #scheme 21:53:15 So maybe we ought to use the same interchange format for programming languages as we use for human languages! Oh, wait...I guess that's text, isn't it? 21:53:16 -!- kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has quit [Client Quit] 21:54:32 I think human languages' format is much more than just text, if you think it in the sense of gathering the understanding from the text. 21:54:45 Seeing as every "new" language has just been repackaging features of older ones, sure, I'd say the expressive power of text has a limit 21:55:00 But few programs ever reach that limit 21:55:58 aside that, few programmers ever reach that limit. 21:56:12 -!- ofthelesser [i=oftheles@cpe-174-100-207-183.neo.res.rr.com] has quit [SendQ exceeded] 21:56:32 I think the next big thing is the syntactic abstraction, though not the way how lisp does it. 21:56:35 ofthelesser [i=oftheles@cpe-174-100-207-183.neo.res.rr.com] has joined #scheme 21:56:38 -!- sebell is now known as sb-away 21:57:19 -!- wingo [n=wingo@67.Red-79-156-145.staticIP.rima-tde.net] has quit [Read error: 113 (No route to host)] 21:57:27 sleepydog: You overstate the case. Prolog, for example, was not a repackaging of the features of languages that preceded it. 21:57:27 jcowan, memo from gnomon: pong! 21:57:27 jcowan, memo from offby1: be afraid. Be very afraid. 21:57:31 instead that you write the macros by hand, the programming environment looks over your code and recognises the useful macros that look understandable for the human. 21:58:09 I don't know. There are a lot of people who despise syntactic abstraction and consider it a severe misfeature. 21:58:37 jcowan: they are *the* way to increase code readability and make it maintainable. 21:58:51 -!- hkBst [n=hkBst@gentoo/developer/hkbst] has quit [Read error: 104 (Connection reset by peer)] 21:59:17 I can't see of other way to compress the code size further or make programs smaller from the point where I'm going with wood, without relying on something such. 21:59:57 perhaps the macros end up being completely programmer-dependent 22:00:06 jcowan: But how old is prolog? I'm not saying text is restrictive, I'm saying "improving expression", isn't a worthwhile goal. Lots of things can be expressed very clearly in text, with what we have today. 22:01:48 sleepydog: after reading bunch of javascript code, hellishly lot of python code and staggering amount of C code, my opinion differs. 22:02:23 well.. and after not being able to read haskell code at all 22:03:02 You can't make the assumption that "the next big thing" will make it easier to be a good programmer...that's hard. 22:03:20 Cheery: better compression != better. APL has mostly been a dead end in programming languages. 22:03:51 jcowan: better readability combined with smaller amount of code to read == better 22:03:56 jcowan: I wouldn't say that. It's found it's niche 22:04:21 (2=0+.=T.|T)/TN is an APL expression that prints the prime numbers from 1 to N. 22:04:47 sleepydog: I don't assume that. Instead I assume that "next big thing" makes good programmer better programmers. 22:04:53 -!- Pepe_ [n=ppjet@ABordeaux-156-1-130-88.w90-5.abo.wanadoo.fr] has quit [Read error: 131 (Connection reset by peer)] 22:05:00 sleepydog: I didn't mean it's been a failure: dead end != failure. Just that it hasn't been productive of a whole lot of other languages: J, K, (Q)Nial are about it. 22:05:04 Pepe_ [n=ppjet@ABordeaux-156-1-130-88.w90-5.abo.wanadoo.fr] has joined #scheme 22:05:28 That's certainly concise, but how readable is it? 22:05:29 it is and it is going to be hard to be a good programmer. 22:05:48 jcowan, plink? 22:05:49 jcowan: It's readable if you learn APL 22:07:26 jcowan: yeah, making code with fixed syntax more concise is basicly a dead end, but that's what I've been saying all the time. 22:07:36 I know APL, and I certainly couldn't see what the code was doing at a glance if I didn't already know it. 22:08:04 I'm just dissatisfied to how far I can go with that. 22:08:14 while I'm also dissatisfied to macros. 22:08:58 jcowan: I should take that statement back, then. But I tried learning some J and afterwards I used function combinators a lot more in my scheme code, which I think improved its readability 22:09:01 I've been realising it is a staggering amount of work I have to do in order to get wood syntax behave. 22:10:06 hm. 22:10:19 this has been raising interesting things to wonder though. 22:10:37 *offby1* is impressed that he managed to type APL in this channel 22:10:43 with some smart syntactic abstraction AI.. could I go further than this? 22:10:59 Syntactic abstraction is also problematic for programming as a social activity. 22:11:35 If every programmer has his own idiosyncratic syntax, you can't understand his code until you realize that he has not merely redefined let syntactically (as Arc does) but has changed it semantically to do letrec (as Arc does). 22:11:57 jcowan: yeah, and bunch of other nice things. 22:12:32 But at least he calls it Arc and just runs it on top of Scheme, instead of calling it Scheme, as indeed it is. 22:12:56 getting to sleep 22:13:23 jcowan, you pinged me a day or so ago..? 22:13:24 you've been enrichening my thoughts, thank you from that. 22:13:26 "A young woman from North Carolina / Stretched fiddle-strings 'cross her vagina / With the proper-sized cocks / What was sex became Bach's / _Toccata and Fugue in D minor_". That's syntactic abstraction. 22:13:43 *offby1* applauds 22:13:49 the limerick is the highest form of poetry. 22:13:52 gnomon: yes, it was about the Seuss font. I was chatting with Michael, and he's open in principle to releasing the font as shareware. 22:14:04 Oho! That's brilliant! 22:14:16 -!- Edico [n=Edico@unaffiliated/edico] has quit ["Ex-Chat"] 22:14:16 kinda painful when you get to thinkin' on it though 22:14:23 Thanks so much for broaching the topic with him! 22:14:25 life of a musician is a hard one 22:19:21 hm. my email got an interesting message, I wonder whether this is foobar: http://paste.pocoo.org/show/134514 22:19:32 google didn't threw it into spam. 22:20:11 I feel like it'd be an invitation for spam broadcast 22:20:31 never heard about 'google promotions' 22:20:35 That limerick was written by (imo) the greatest limericist of the 20th century, and he himself considered it his best work in the field. 22:22:14 Cheery: It most certainly is foobar. Read http://en.wikipedia.org/wiki/Advance-fee_fraud for details 22:22:55 offby1: I actually cut and pasted it, but I'm glad it was text and not an image. One up to Unicode. 22:23:19 yeah, if not anything else, I guess replying on the emails on that thing is resulting with a spam flow. 22:24:06 since google search doesn't give anything from 'google promotions', I guess I can safely ignore the message. 22:25:01 anyway, gn 22:25:06 -!- Cheery [n=cheery@a88-113-54-238.elisa-laajakaista.fi] has quit ["Lost terminal"] 22:26:17 *offby1* wonders if the named limericist is also my obt svt. 22:26:43 I'm no Muhammad Ali. 22:26:55 MrFahrenheit [n=RageOfTh@users-42-199.vinet.ba] has joined #scheme 22:27:05 No, it was Isaac Asimov (1920-1992). 22:34:44 Adamant [n=Adamant@c-68-51-134-164.hsd1.ga.comcast.net] has joined #scheme 22:36:39 Pepe__ [n=ppjet@ABordeaux-156-1-60-61.w86-217.abo.wanadoo.fr] has joined #scheme 22:37:01 ah, the fella with the wild eyebrows 22:38:03 Among other attributes yes. 22:40:10 -!- sb-away is now known as sctb 22:44:20 -!- kazzmir [n=kazzmir@98.202.86.149] has quit [Read error: 110 (Connection timed out)] 22:44:36 -!- jonrafkind [n=jon@98.202.86.149] has quit [Success] 22:44:44 kazzmir [n=kazzmir@98.202.86.149] has joined #scheme 22:44:45 jonrafkind [n=jon@98.202.86.149] has joined #scheme 22:44:57 -!- Pepe_ [n=ppjet@ABordeaux-156-1-130-88.w90-5.abo.wanadoo.fr] has quit [Read error: 110 (Connection timed out)] 22:50:00 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 22:52:23 -!- borism [n=boris@195-50-199-137-dsl.krw.estpak.ee] has quit [Read error: 145 (Connection timed out)] 22:52:23 -!- sctb [n=sctb@S01060016cbc2d41a.cg.shawcable.net] has quit ["rcirc on GNU Emacs 23.1.1"] 22:53:49 -!- sepult [n=user@xdsl-87-78-103-117.netcologne.de] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 22:58:04 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 22:58:09 jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 23:08:05 kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has joined #scheme 23:20:16 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Read error: 60 (Operation timed out)] 23:20:29 -!- Kusanagi [n=Lernaean@unaffiliated/kusanagi] has quit [Read error: 110 (Connection timed out)] 23:23:27 -!- dzhus [n=sphinx@95-24-185-234.broadband.corbina.ru] has quit [Read error: 104 (Connection reset by peer)] 23:23:55 dzhus [n=sphinx@95-24-185-234.broadband.corbina.ru] has joined #scheme 23:26:06 hadronzoo [n=user@ppp-70-251-121-9.dsl.rcsntx.swbell.net] has joined #scheme 23:27:34 -!- dzhus [n=sphinx@95-24-185-234.broadband.corbina.ru] has quit [Remote closed the connection] 23:27:55 -!- Pepe__ [n=ppjet@ABordeaux-156-1-60-61.w86-217.abo.wanadoo.fr] has quit [Remote closed the connection] 23:31:14 jedc [n=jedc@pool-70-17-156-181.wma.east.verizon.net] has joined #scheme 23:41:14 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 23:49:56 What is the advantage to mod_lisp's single socket multiplexed requests model over its other single socket per request model? Would not the latter have the advantage in heavy load situations where you could utilize multiple cores to do your computations as opposed to waiting to send out a single response before handling another? 23:50:06 Is there some other reason that the single method would be desirable? 23:50:50 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 23:50:51 -!- MrFahrenheit [n=RageOfTh@users-42-199.vinet.ba] has quit [Read error: 110 (Connection timed out)] 23:51:40 I suppose a single socket would be advantageous when you are straining the limit of simultaneous TCP connections in the kernel. 23:53:10 jcowan: Wouldn't it be better to just put a thread or spawn limit on the application or server instead of multiplexing the connection? 23:54:24 Well, yes, but then you may be wasting bandwidth. I mean, TCP is to begin with a way of multiplexing the raw bandwidth of your Internet connection anyhow. 23:54:33 -!- pemleco [n=sveklo@cs181131.pp.htv.fi] has quit [Remote closed the connection] 23:54:42 If we could afford it, it would be better to have a private line to everybody, but lines aren't free. 23:55:03 So we multiplex in order to work around the scarcity, real or artificial, of a resource. 23:55:36 *jcowan* remembers when everyone had a terminal on his desk at work, with multiple lines to each of the various computers. 23:56:18 If the raw bandwidth far exceeds the max number of connections, we need to multiplex them. 23:58:37 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 23:59:05 This is all speculative, of course