00:06:01 PfhorSlayer [~PfhatWork@sceapdsd43-15.989studios.com] has joined #scheme 00:07:54 Brendan_T [~brendan@46.105.251.111] has joined #scheme 00:08:22 I'm writing a Visual Studio language service for an internal scheme-based scripting language we use at my company. I'm trying to figure out the best way to handle define-syntax constructs (with the intellisense completion and tooltips and all that), and I guess I'm looking for a good reference for how define-syntax constructs work. Anyone got a good link? 00:11:38 define-syntax itself is pretty simple 00:11:51 it's all the syntax transformers that can be used that are complicated 00:12:57 http://docs.racket-lang.org/r6rs-lib-std/r6rs-lib-Z-H-13.html#node_idx_1098 ought to help with syntax-case 00:12:57 http://tinyurl.com/3fq3rnu 00:13:53 I don't really need to worry about the internals of each case, just what the cases are (I think) 00:14:16 and I guess I need to be able to narrow down the possiblities list based on what's already been typed 00:15:03 -!- wigners_friend [~wigners_f@dagaz.whitequark.org] has quit [Ping timeout: 244 seconds] 00:15:35 well my link should still be useful 00:15:42 I'm reading through it now, thanks :) 00:16:09 http://docs.racket-lang.org/reference/stx-patterns.html should cover syntax-rules 00:16:18 those are the two major ones 00:16:38 -!- leo2007 [~leo@123.114.48.219] has quit [Ping timeout: 245 seconds] 00:16:57 er actually that second link also covers syntax-case 00:18:37 you could take a look at http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_sec_4.3 for syntax-rules 00:18:48 http://tinyurl.com/5ajrz2 00:20:13 From a quick search it appears we mostly use syntax-rules, and only use syntax-case in a few places 00:20:43 So I should probably focus on that one first :) 00:21:35 -!- jonrafkind [~jon@crystalis.cs.utah.edu] has quit [Ping timeout: 252 seconds] 00:21:58 replore_ [~replore@203.152.213.161.static.zoot.jp] has joined #scheme 00:24:00 -!- lonstein_ is now known as lonstein 00:30:10 realitygrill [~realitygr@76.226.212.207] has joined #scheme 00:31:21 -!- kk` [~kk@unaffiliated/kk/x-5380134] has quit [Quit: Leaving] 00:33:40 -!- Brendan_T [~brendan@46.105.251.111] has quit [Remote host closed the connection] 00:37:19 -!- soveran [~soveran@186.19.214.247] has quit [Remote host closed the connection] 00:38:25 -!- masm [~masm@2.80.128.151] has quit [Quit: Leaving.] 00:39:27 chromaticwt [8118b19c@gateway/web/freenode/ip.129.24.177.156] has joined #scheme 00:43:18 brandelune [~suzume@pl316.nas982.takamatsu.nttpc.ne.jp] has joined #scheme 00:43:18 jonrafkind [~jon@jonr5.dsl.xmission.com] has joined #scheme 00:48:56 -!- chromaticwt [8118b19c@gateway/web/freenode/ip.129.24.177.156] has quit [Ping timeout: 265 seconds] 00:50:40 -!- Hal9k is now known as HEAVY_VOICE 00:50:49 -!- HEAVY_VOICE is now known as Hal9k 00:57:38 -!- brandelune [~suzume@pl316.nas982.takamatsu.nttpc.ne.jp] has quit [Quit: brandelune] 01:03:55 Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has joined #scheme 01:04:15 -!- ijp [~user@host86-182-155-249.range86-182.btcentralplus.com] has quit [Ping timeout: 248 seconds] 01:05:35 -!- Modius_ [~Modius@cpe-70-123-140-183.austin.res.rr.com] has quit [Ping timeout: 260 seconds] 01:07:42 -!- mmc1 [~michal@178-85-65-177.dynamic.upc.nl] has quit [Ping timeout: 276 seconds] 01:12:11 leo2007 [~leo@119.255.41.67] has joined #scheme 01:17:30 chromaticwt [8118b19c@gateway/web/freenode/ip.129.24.177.156] has joined #scheme 01:20:07 dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has joined #scheme 01:20:45 Brendan_T [~brendan@46.105.251.111] has joined #scheme 01:21:32 -!- Giomancer [~Gio@adsl-76-231-35-17.dsl.irvnca.sbcglobal.net] has quit [Quit: Download IceChat at www.icechat.net] 01:42:04 -!- Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has quit [Read error: Connection reset by peer] 01:42:38 Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has joined #scheme 01:46:27 -!- chromaticwt [8118b19c@gateway/web/freenode/ip.129.24.177.156] has quit [Ping timeout: 265 seconds] 01:57:54 -!- drdo [~drdo@85.207.54.77.rev.vodafone.pt] has quit [Remote host closed the connection] 01:58:17 drdo [~drdo@85.207.54.77.rev.vodafone.pt] has joined #scheme 01:59:35 metasyntax [~taylor@184.17.183.11] has joined #scheme 02:11:06 Can you mix syntax-rules and syntax-case in the same define-syntax? 02:22:10 coderdad [~coderdad@ip72-200-211-242.ok.ok.cox.net] has joined #scheme 02:22:37 yea 02:22:51 syntax-rules just expands to (lambda (stx) (syntax-case stx () ...)) 02:29:04 -!- homie [~levgue@xdsl-87-79-194-68.netcologne.de] has quit [Read error: Operation timed out] 02:29:08 wbooze` [~levgue@xdsl-78-35-146-81.netcologne.de] has joined #scheme 02:29:42 homie` [~levgue@xdsl-78-35-146-81.netcologne.de] has joined #scheme 02:31:38 -!- wbooze [~levgue@xdsl-87-79-194-68.netcologne.de] has quit [Ping timeout: 245 seconds] 02:44:25 ah, I see. Thanks! 02:44:48 -!- samth is now known as samth_away 02:48:53 PfhorSlayer: Marathon eh. 02:52:13 -!- yell0 [yello@unaffiliated/contempt] has quit [Ping timeout: 240 seconds] 02:55:34 PfhorSlayer: Good luck! I gave up on macro analysis when I did my VS lang service for IronScheme. That and the horrible complex VS API. 03:04:29 -!- djanatyn is now known as djanatyn|afk 03:10:32 qu1j0t3: Yup! 03:10:45 leppie: Tell me about it. The VS SDK is one heaping pile of complicated shit :\ 03:11:00 I've mostly gotten the hang of it, though. 03:11:38 I've spent the last week and a half at work here focusing on this, and I feel like I know what I'm doing in the SDK now for the most part 03:11:47 Next up after this is a debugger for the language, though 03:11:56 That's going to be fun :\ 03:12:12 The most difficult part is going to be getting it working with VS, not writing the actual debugging code 03:13:25 After writing the tokenizer and AST, it's pretty easy to extract the information necessary for all the intellisense stuff 03:15:08 -!- turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has quit [Ping timeout: 252 seconds] 03:16:16 My parser's only like 500 lines of code. 03:24:21 the problem is dealing with more 'complex' stuff, eg define-syntax that expands to define or perhaps another define-syntax or something else. 03:24:45 You pretty much need a non-alpha renaming macro expander 03:25:02 the predefined forms are easy however 03:26:49 I'm not too worried about that kind of stuff, since we aren't really doing that in our codebase 03:26:57 ok cool :) 03:27:35 PfhorSlayer: why arent you using IronScheme? ;P 03:28:29 When I started writing this it was just a syntax colorizer that dealt with tokens that were very specific to our engine / games 03:28:43 It's since grown :) 03:28:48 oh ok, game engine scripter 03:29:39 Here at Naughty Dog we use a scripting language called "DC" that's based on scheme and has some stuff that was held over from the old GOAL scripting language 03:29:49 which IIRC was also based on LISP 03:30:08 cool 03:31:03 Speaking of VS and whatnot, is there a channel where one could get support for the SDK stuff? 03:31:41 lol, even if there was, I am not sure I am willing to endure the pain of others :) 03:33:45 that's a good point :X 03:33:51 -!- Nisstyre [~yours@infocalypse-net.info] has quit [Ping timeout: 252 seconds] 03:34:00 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Ping timeout: 240 seconds] 03:34:06 I think the best place is to go is the MSDN forums 03:34:34 what version of VS are you targetting? 03:35:08 2010 03:36:00 Nisstyre [~yours@infocalypse-net.info] has joined #scheme 03:37:23 i believe that is a bit easier than the versions. I used VS2008 back then. 03:37:46 Still havent bothered looking at VS2010 due to the large number of bugs affecting IronSCheme 03:38:00 VS2010 and .NET 4 bugs 03:45:23 off to day job, argghh, cheers 03:46:56 -!- otakutomo [~otakutomo@KD027083117212.ppp-bb.dion.ne.jp] has quit [Read error: Connection reset by peer] 03:47:33 Later man, thanks! 03:51:22 otakutomo [~otakutomo@KD027083117212.ppp-bb.dion.ne.jp] has joined #scheme 03:55:41 soveran [~soveran@186.19.214.247] has joined #scheme 04:05:11 MichaelRaskin [~MichaelRa@195.178.216.22] has joined #scheme 04:07:16 confab_ [~win7@c-24-10-60-185.hsd1.ca.comcast.net] has joined #scheme 04:08:09 -!- githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has quit [Ping timeout: 260 seconds] 04:08:09 -!- djanatyn|afk [~djanatyn@173-13-139-236-sfba.hfc.comcastbusiness.net] has quit [Ping timeout: 260 seconds] 04:08:18 -!- DrTeggy [~drteggy@HSI-KBW-078-042-118-121.hsi3.kabel-badenwuerttemberg.de] has quit [Read error: Connection reset by peer] 04:08:35 DrTeggy [~drteggy@HSI-KBW-078-042-118-121.hsi3.kabel-badenwuerttemberg.de] has joined #scheme 04:09:24 djanatyn|afk [~djanatyn@mail.digitalkingdom.org] has joined #scheme 04:09:27 -!- incubot [incubot@klutometis.wikitex.org] has quit [Remote host closed the connection] 04:09:58 -!- confab [~win7@c-24-10-60-185.hsd1.ca.comcast.net] has quit [Ping timeout: 245 seconds] 04:10:06 incubot [~incubot@klutometis.wikitex.org] has joined #scheme 04:12:44 githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has joined #scheme 04:26:02 -!- dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has quit [Quit: dnolen] 04:28:00 -!- soveran [~soveran@186.19.214.247] has quit [Remote host closed the connection] 04:38:25 -!- realitygrill [~realitygr@76.226.212.207] has quit [Quit: realitygrill] 04:40:36 -!- Brendan_T [~brendan@46.105.251.111] has quit [Remote host closed the connection] 04:48:09 -!- EmmanuelOga [~emmanuel@190.244.27.236] has quit [Ping timeout: 252 seconds] 04:49:39 -!- rff [~rff@ip72-207-248-18.br.br.cox.net] has quit [Read error: Connection timed out] 04:52:23 -!- peterhil [~peterhil@YYDCCLXIX.gprs.sl-laajakaista.fi] has quit [Ping timeout: 260 seconds] 04:57:52 kvda [~kvda@124-169-130-71.dyn.iinet.net.au] has joined #scheme 05:11:54 -!- confab_ is now known as confab 05:20:50 wigners_friend [~wigners_f@dagaz.whitequark.org] has joined #scheme 05:49:54 -!- githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has quit [Ping timeout: 258 seconds] 05:55:11 turbofail [~user@99-121-57-65.lightspeed.sntcca.sbcglobal.net] has joined #scheme 05:56:29 githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has joined #scheme 06:02:21 -!- jonrafkind [~jon@jonr5.dsl.xmission.com] has quit [Ping timeout: 258 seconds] 06:03:30 -!- coderdad [~coderdad@ip72-200-211-242.ok.ok.cox.net] has quit [Quit: Computer has gone to sleep.] 06:03:44 smtlaissezfaire [~smtlaisse@76.15.192.54] has joined #scheme 06:17:45 mikecsh [~mikecsh@113.28.74.33] has joined #scheme 06:20:48 -!- otakutomo [~otakutomo@KD027083117212.ppp-bb.dion.ne.jp] has quit [Ping timeout: 255 seconds] 06:28:12 PfhorSlayer: For just syntax-rules you can look at alexpander. Chibi also has a fast and simple algorithm, but I need to document it. 06:34:00 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 240 seconds] 06:34:07 jewel [~jewel@196-215-16-235.dynamic.isadsl.co.za] has joined #scheme 06:34:25 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 06:47:57 -!- jewel [~jewel@196-215-16-235.dynamic.isadsl.co.za] has quit [Ping timeout: 260 seconds] 06:54:07 -!- markskilbeck [~Mark@unaffiliated/markskilbeck] has quit [Ping timeout: 248 seconds] 06:56:59 markskilbeck [~Mark@unaffiliated/markskilbeck] has joined #scheme 07:05:51 -!- stepnem [~stepnem@176.119.broadband10.iol.cz] has quit [Ping timeout: 248 seconds] 07:13:28 -!- MasseR [~masse@dyn68-323.yok.fi] has quit [Ping timeout: 256 seconds] 07:14:55 MasseR [~masse@dyn68-323.yok.fi] has joined #scheme 07:21:42 -!- turbofail [~user@99-121-57-65.lightspeed.sntcca.sbcglobal.net] has quit [Ping timeout: 258 seconds] 07:32:02 otakutomo [~otakutomo@KD027083117212.ppp-bb.dion.ne.jp] has joined #scheme 07:33:12 -!- MrFahrenheit [~RageOfTho@users-147-29.vinet.ba] has quit [Ping timeout: 258 seconds] 07:39:59 choas [~lars@p4FDC5F86.dip.t-dialin.net] has joined #scheme 07:53:04 gravicappa [~gravicapp@ppp91-77-161-49.pppoe.mtu-net.ru] has joined #scheme 08:02:51 -!- smtlaissezfaire [~smtlaisse@76.15.192.54] has quit [Quit: smtlaissezfaire] 08:02:57 -!- choas [~lars@p4FDC5F86.dip.t-dialin.net] has quit [Ping timeout: 255 seconds] 08:08:37 -!- leo2007 [~leo@119.255.41.67] has quit [Ping timeout: 240 seconds] 08:15:29 choas [~lars@p4FDC5F86.dip.t-dialin.net] has joined #scheme 08:18:52 samth [~samth@nomad.ccs.neu.edu] has joined #scheme 08:24:39 djcb [djcb@nat/nokia/x-omhijqxpvemoejcl] has joined #scheme 08:25:32 -!- DrTeggy [~drteggy@HSI-KBW-078-042-118-121.hsi3.kabel-badenwuerttemberg.de] has quit [Quit: Going, going, gone...] 08:26:57 Operaist2 [~OperaIst@ppp-124-122-122-185.revip2.asianet.co.th] has joined #scheme 08:27:21 why wont (define (larger-two x y z) 08:27:23 (if (and (< z x) (< z y)) x y) 08:27:24 (if (and (< y x) (< y z)) x z) 08:27:26 (if (and (< x y) (< x z)) y z) work? 08:27:46 -!- kvda [~kvda@124-169-130-71.dyn.iinet.net.au] has quit [Quit: -___-] 08:28:06 -!- pygospa [~Pygosceli@kiel-5f77ba09.pool.mediaWays.net] has quit [Disconnected by services] 08:28:18 pygospa [~Pygosceli@kiel-4dbec928.pool.mediaWays.net] has joined #scheme 08:30:36 -!- choas [~lars@p4FDC5F86.dip.t-dialin.net] has quit [Ping timeout: 260 seconds] 08:31:51 -!- samth [~samth@nomad.ccs.neu.edu] has quit [Ping timeout: 258 seconds] 08:32:14 because (if (and (< z x) (< z y)) x y) returns either x or y 08:32:54 you probably want (cond), and the result will have to be consed 08:33:20 -!- pygospa [~Pygosceli@kiel-4dbec928.pool.mediaWays.net] has quit [Disconnected by services] 08:33:31 pygospa [~Pygosceli@kiel-4dbec62b.pool.mediaWays.net] has joined #scheme 08:36:17 consed? 08:36:22 does that mean (xxx)? 08:36:46 make a list out of the remaining numbers 08:37:30 the basic construction block for that is the (cons) procedure (the magnificent) 08:39:18 im sorry im a bit of a noob but what is cons? 08:44:06 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 252 seconds] 09:04:03 Operaist2: which scheme book do you use 09:07:35 im reading SICP 09:07:52 i never learned scheme beforehand 09:09:50 so either read up again on "Pairs" section 1.2.1 or if you haven't been that far yet stick to the course of the book and try another solution 09:09:59 sorry section 2.1.1 it is 09:10:13 -!- twem2 [~tristan@puma-mxisp.mxtelecom.com] has quit [Ping timeout: 260 seconds] 09:10:19 twem2 [~tristan@puma-mxisp.mxtelecom.com] has joined #scheme 09:10:48 -!- emma [~em@unaffiliated/emma] has quit [Ping timeout: 245 seconds] 09:12:12 emma [~em@unaffiliated/emma] has joined #scheme 09:24:04 -!- luist [~luist@189.59.201.53] has quit [Quit: luist] 09:29:23 -!- gravicappa [~gravicapp@ppp91-77-161-49.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 09:45:47 ok thx 10:02:33 luist [~luist@186.215.97.229] has joined #scheme 10:03:31 -!- mikecsh [~mikecsh@113.28.74.33] has quit [Quit: mikecsh] 10:06:18 masm [~masm@2.80.128.151] has joined #scheme 10:07:12 -!- Operaist2 [~OperaIst@ppp-124-122-122-185.revip2.asianet.co.th] has quit [Ping timeout: 240 seconds] 10:22:12 Operaist2 [~OperaIst@ppp-110-169-230-46.revip5.asianet.co.th] has joined #scheme 10:25:28 gravicappa [~gravicapp@80.90.116.82] has joined #scheme 10:26:53 -!- Operaist2 [~OperaIst@ppp-110-169-230-46.revip5.asianet.co.th] has quit [Client Quit] 10:35:01 -!- Pepe_ [~ppjet@anderith.bouah.net] has quit [Ping timeout: 240 seconds] 10:36:02 Pepe_ [~ppjet@anderith.bouah.net] has joined #scheme 10:39:31 -!- replore_ [~replore@203.152.213.161.static.zoot.jp] has quit [Remote host closed the connection] 10:44:24 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 240 seconds] 11:00:08 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 11:06:00 tupi_ [~david@189.119.177.165] has joined #scheme 11:10:34 ijp [~user@host86-182-155-249.range86-182.btcentralplus.com] has joined #scheme 11:16:43 realitygrill [~realitygr@76.226.212.207] has joined #scheme 11:38:05 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 260 seconds] 11:38:30 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 11:43:07 rff [~rff@ip72-207-248-18.br.br.cox.net] has joined #scheme 12:01:27 -!- djanatyn|afk is now known as djanatyn 12:02:52 -!- metasyntax|work [~taylor@fw-its-kt209a-2.dyn.ipfw.edu] has quit [Quit: WeeChat [quit]] 12:04:09 -!- X-Scale [email@2001:470:1f14:135b::2] has quit [Read error: Connection reset by peer] 12:04:53 X-Scale [email@sgi-ultra64.broker.freenet6.net] has joined #scheme 12:05:18 -!- X-Scale is now known as Guest20113 12:09:48 -!- homie` [~levgue@xdsl-78-35-146-81.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 12:10:03 -!- wbooze` [~levgue@xdsl-78-35-146-81.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 12:14:38 -!- Guest20113 is now known as X-Scale 12:25:08 -!- realitygrill [~realitygr@76.226.212.207] has quit [Quit: realitygrill] 12:31:12 soveran [~soveran@186.19.214.247] has joined #scheme 12:33:00 airolson [~airolson@CPE00222d55a738-CM00222d55a735.cpe.net.cable.rogers.com] has joined #scheme 12:39:15 PfhorSlayer: oh, you're at naughtydog? I just found AG's 9-part series including some of the more detailed stuff on GOOL/GOAL 12:40:45 well, detailed., i dunno... but until he wrote that, there was almost nothing on the web about it except for vaguely suggestive threads on c2.com [not a bad place to be mentioned, to be sure] 12:42:41 Snaffu [~Snaffu@oh-69-34-16-39.sta.embarqhsd.net] has joined #scheme 12:43:51 kuribas [~user@94-227-91-129.access.telenet.be] has joined #scheme 12:44:49 Brendan_T [~brendan@46.105.251.111] has joined #scheme 12:51:28 -!- leppie [~lolcow@196-215-71-176.dynamic.isadsl.co.za] has quit [Read error: Connection reset by peer] 12:52:04 MrFahrenheit [~RageOfTho@users-147-29.vinet.ba] has joined #scheme 12:52:34 replore [~replore@ntkngw304073.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 12:55:44 -!- X-Scale [email@sgi-ultra64.broker.freenet6.net] has quit [Read error: Connection reset by peer] 12:57:05 X-Scale [email@sgi-ultra64.broker.freenet6.net] has joined #scheme 12:58:02 leppie [~lolcow@196-215-71-176.dynamic.isadsl.co.za] has joined #scheme 12:58:06 coderdad [~coderdad@wsip-70-164-198-85.ok.ok.cox.net] has joined #scheme 12:59:18 -!- airolson [~airolson@CPE00222d55a738-CM00222d55a735.cpe.net.cable.rogers.com] has quit [] 13:00:14 -!- Adrinael [~adrinael@barrel.rolli.org] has quit [Ping timeout: 244 seconds] 13:00:59 Adrinael [~adrinael@barrel.rolli.org] has joined #scheme 13:01:18 stepnem [~stepnem@176.119.broadband10.iol.cz] has joined #scheme 13:08:30 -!- mornfall [~mornfall@kde/developer/mornfall] has quit [Ping timeout: 260 seconds] 13:08:47 EmmanuelOga [~emmanuel@190.244.27.236] has joined #scheme 13:09:45 pandeiro [~pandeiro@177.32.216.216] has joined #scheme 13:20:00 dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has joined #scheme 13:26:30 -!- replore [~replore@ntkngw304073.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 13:32:34 mornfall [~mornfall@anna.fi.muni.cz] has joined #scheme 13:32:34 -!- mornfall [~mornfall@anna.fi.muni.cz] has quit [Changing host] 13:32:34 mornfall [~mornfall@kde/developer/mornfall] has joined #scheme 13:35:40 smtlaissezfaire [~smtlaisse@76.15.192.54] has joined #scheme 13:36:01 wbooze [~levgue@xdsl-78-35-146-81.netcologne.de] has joined #scheme 13:38:36 -!- pandeiro [~pandeiro@177.32.216.216] has quit [Quit: Out of quarters] 13:39:02 -!- Brendan_T [~brendan@46.105.251.111] has quit [Remote host closed the connection] 13:40:33 pandeiro [~pandeiro@177.32.216.216] has joined #scheme 13:42:54 homie [~levgue@xdsl-78-35-146-81.netcologne.de] has joined #scheme 13:43:03 -!- stepnem [~stepnem@176.119.broadband10.iol.cz] has quit [Quit: ZNC - http://znc.sourceforge.net] 13:44:39 stepnem [~stepnem@176.119.broadband10.iol.cz] has joined #scheme 14:05:17 -!- samth_away is now known as samth 14:10:44 -!- homie [~levgue@xdsl-78-35-146-81.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 14:10:51 -!- wbooze [~levgue@xdsl-78-35-146-81.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 14:18:07 -!- dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has quit [Quit: dnolen] 14:21:04 -!- tupi_ [~david@189.119.177.165] has quit [Read error: Connection reset by peer] 14:24:05 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Quit: Computer has gone to sleep.] 14:27:21 -!- stepnem [~stepnem@176.119.broadband10.iol.cz] has quit [Quit: ZNC - http://znc.sourceforge.net] 14:30:54 PfhorSlayer: btw, it's my understanding that you're using a version of Racket, in which case you might be interested in the #racket channel as well 14:32:36 stepnem [~stepnem@176.119.broadband10.iol.cz] has joined #scheme 14:34:37 PfhorSlayer: and this poignant little note http://news.ycombinator.com/item?id=3151751 14:34:46 PfhorSlayer: (re AG ... AG is that YOU?!?!) 14:35:25 PfhorSlayer: more correct link http://news.ycombinator.com/item?id=3152131 14:35:35 tupi_ [~david@189.119.147.186] has joined #scheme 14:37:55 -!- smtlaissezfaire [~smtlaisse@76.15.192.54] has quit [Quit: smtlaissezfaire] 14:39:40 -!- githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 14:48:41 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 15:00:58 wisey [~Steven@host86-147-41-203.range86-147.btcentralplus.com] has joined #scheme 15:02:42 could someone explain continuations to me? I'm having a little trouble getting the intuitive understanding, is it a stored computing context or ...? Maybe if I knew a bit more about the implementation of continuations, any good resources? 15:05:18 I'd start with the Wikipedia article 15:05:33 Razz: Imagine a post-it note: I want to go to the shops later.. And you stick it on your fridge... The post-it note is your continuation object.. The rest is basically about understanding the syntax & mechanics 15:05:37 eli had a good explanation, but I can't find a link 15:06:38 Razz: Dan Friedman has some lecture notes on them: http://www.pst.ifi.lmu.de/lehre/WS0203/psem/continuations/applications_of_continuations.pdf 15:06:39 http://tinyurl.com/3zvdnhm 15:06:58 Nice, thx, I'll start reading :-) 15:09:20 realitygrill [~realitygr@thewall.novi.lib.mi.us] has joined #scheme 15:12:37 continuations are like monads, poor explanations are a dime a dozen :P 15:12:53 hehe, yeah, those I need to work out too :-P 15:13:15 though, resources are available which is good in any case 15:13:53 a bad analogy is like a leaky screwdriver 15:14:03 lol 15:14:28 :-) 15:17:17 offby1: LOL 15:20:14 ente [~daemon@unaffiliated/n0nsense] has joined #scheme 15:20:25 hei :) 15:21:18 Hello ente! 15:21:27 Welcome to #scheme 15:21:58 business hours 9am--7pm, closed bank holidays 15:23:21 Which time zone? Nobody knows! 15:23:30 :) 15:23:44 my gosh, you're all in here too :P 15:24:06 And then some! There's also people from other Schemes as well! 15:24:19 whoa whoa! 15:25:03 Whatever happened to Riastradh? I miss him :-( 15:25:07 The secret of continuations is that they are really part of a large con scheme. 15:25:19 how so? 15:26:33 (I just wanted to chime in with another badly worded explanation.) 15:26:44 lol, right :-P 15:28:04 Ahhh, continuations 15:28:05 I think we need a langauge where you can use continuations and monads together.. 15:28:44 There's how they're implemented ("copy the stack!" "don't use a stack, used a linked list of call frames!" "don't use call frames, convert your code to CPS and created a linked list of actual continuation closures!") then there's what they mean "They represent... the FUTURE!" 15:29:01 dostoyevsky: You can do monads in Scheme! So, job done! NEXT! 15:29:37 I don't know what monads are but the name sounds cool and reminds me of something edible 15:29:54 People who already know programming and want to know continuations can get a quick introduction by thinking about the implementation ("Imagine... copying the stack!"), but that might make it harder to really think of how to use them creatively. 15:30:03 Exercise: What does (call/cc call/cc) do? 15:30:50 wouldn't that loop eternally? 15:31:02 -!- coderdad [~coderdad@wsip-70-164-198-85.ok.ok.cox.net] has quit [Quit: Computer has gone to sleep.] 15:31:50 Razz: I just tried it and it didn't. 15:32:07 Which was good, as I hadn't expected it to, but it was sufficiently mind-bending that I wanted to check ;-) 15:32:34 -!- MichaelRaskin [~MichaelRa@195.178.216.22] has left #scheme 15:34:01 dostoyevsky: the name monads should remind us of gonads. which are in fact edible. 15:34:16 alaricsp: what exactly does it do? Create a continuation that creates a continuation? 15:34:17 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 15:34:35 -!- kuribas [~user@94-227-91-129.access.telenet.be] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 15:35:29 Razz: Well, the outher call/cc calls its argument and passes in the current continuation, right? Call that K. 15:35:42 So we have an inner call/cc being called with the continuation K of the entire expression 15:35:48 coderdad [~coderdad@wsip-70-164-198-85.ok.ok.cox.net] has joined #scheme 15:36:13 But the continuation of the inner call/cc is also the continuation of the entire expression, as call/cc tail calls its argument 15:36:18 So K is applied to K 15:36:36 Now that K is applied, that means that the result of the entire expression is whatever K is applied to 15:36:39 Which is K 15:36:49 So, (call/cc call/cc) basically returns its own continuation, as I see it 15:36:50 rudybot: (negative? -0.0) 15:36:51 leppie: your sandbox is ready 15:36:51 leppie: ; Value: #f 15:36:56 rudybot: (negative? 0.0) 15:36:57 leppie: ; Value: #f 15:37:02 If Riastradh were here, he would now rap my knuckles sharply and say that's wrong. 15:37:06 rudybot: eval -0.0 15:37:06 leppie: ; Value: -0.0 15:37:07 rudybot: (call/cc call/cc) 15:37:08 alaricsp: your sandbox is ready 15:37:08 alaricsp: ; Value: # 15:37:13 Ta-da! 15:37:24 *alaricsp* pines for Riastradh 15:37:49 alaricsp: ok, that makes it a lot clearer thx, though I still need to get a bit deeper into continuation before I'm able to explain this to myself I think 15:38:39 *qu1j0t3* pines for the fjords 15:38:54 ee's not dead, ee's sleepin! 15:39:25 Razz: A common use of continuations as "creating a return statement" 15:39:27 In C you can write: 15:39:42 { ..... some stuff ... if (early_exit) return 0; ... skippable stuff ... } 15:39:46 In Scheme, you can do that with: 15:40:20 (call/cc (lambda (return) ... some stuff ... (if early_exit (return 0) ... skippable stuff ... )) 15:40:40 But it's better than the C one as you can pass your "return" to a procedure that can use it when nested arbitrarily deep, to return from the outer function 15:40:52 I used this in some code that displays pages of stuff to the user, with a quit option 15:40:59 1) Capture an escape continuation and put it somewhere safe 15:41:15 alaricsp: thx, I'm starting to get a clear picture of this now 15:41:26 2) Use fold to iterate over the sequence, with a procedure that displays lines until it's displayed ten, then prompts the user to hit enter for more, or "q" to abort 15:41:41 3) If the user hits "q", call the escape continuation, and the fold is escaped from 15:42:15 You can also store a continuation for however long you want, and call it again whenever you please. This is the coolest past of scheme continuations :D 15:42:26 You can re-enter a function as well as exit 15:42:57 Then bam, you've got coroutines 15:43:03 Yeah! What imphasing said! 15:43:06 Also, amb. 15:43:35 I'm guessing SICP would be a good book to start reading? 15:43:54 Once you're comfortable with plain continuations, look into delimited continuations, they're much nicer to use. 15:43:56 SICP doesn 15:44:04 it does 15:44:12 t talk much about continuations, AFAIR 15:44:16 see 4.3 or so (amb evaluator) 15:44:17 rudybot: eval -0 15:44:18 leppie: ; Value: 0 15:44:20 ijp: composable continuations.. still don't understand that :O 15:45:59 drwho [~drwho@208.7.157.62] has joined #scheme 15:46:30 rudybot: eval (prompt (begin (control f (begin (f 0) (f 0))) (control f (begin (f 0) (f 0))))) 15:46:31 ijp: your plai sandbox is ready 15:46:31 ijp: error: reference to an identifier before its definition: prompt in module: 'program 15:46:42 rudybot: eval (require racket/control) 15:46:42 ijp: Done. 15:46:43 rudybot: eval (prompt (begin (control f (begin (f 0) (f 0))) (control f (begin (f 0) (f 0))))) 15:46:54 ijp: error: with-limit: out of time 15:46:58 rats 15:49:18 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 15:49:36 choas [~lars@p4FDC5F86.dip.t-dialin.net] has joined #scheme 15:53:51 denisw [~denisw@dslb-188-102-103-185.pools.arcor-ip.net] has joined #scheme 15:56:56 -!- djcb [djcb@nat/nokia/x-omhijqxpvemoejcl] has quit [Quit: Ex-Chat] 16:12:13 drdo` [~drdo@85.207.54.77.rev.vodafone.pt] has joined #scheme 16:13:36 -!- drdo [~drdo@85.207.54.77.rev.vodafone.pt] has quit [Ping timeout: 240 seconds] 16:23:08 -!- tupi_ [~david@189.119.147.186] has quit [Quit: Leaving] 16:26:38 kk` [~kk@77.107.164.131] has joined #scheme 16:26:38 -!- kk` [~kk@77.107.164.131] has quit [Changing host] 16:26:38 kk` [~kk@unaffiliated/kk/x-5380134] has joined #scheme 16:26:47 homie [~levgue@xdsl-78-35-136-103.netcologne.de] has joined #scheme 16:29:17 -!- Snaffu [~Snaffu@oh-69-34-16-39.sta.embarqhsd.net] has quit [Remote host closed the connection] 16:30:21 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 16:30:59 wbooze [~levgue@xdsl-78-35-136-103.netcologne.de] has joined #scheme 16:34:46 -!- coderdad [~coderdad@wsip-70-164-198-85.ok.ok.cox.net] has quit [Quit: Computer has gone to sleep.] 16:36:17 If continuations really are about: saving the stack for later, then implementing them using the C stack (like in guile) might become quite slow, since each time a continuation is created or activated, a lot of things might need to be done until the stack has been copied or recreated... 16:37:01 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 240 seconds] 16:43:17 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 16:44:03 -!- homie [~levgue@xdsl-78-35-136-103.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 16:44:04 dostoyevsky: Implementing continuations pretty much requires you to use an explicit stack instead of the underlying language stack 16:44:06 -!- wbooze [~levgue@xdsl-78-35-136-103.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 16:44:15 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 16:44:23 That's what I did when I implemented them in my scheme interpreter, the seperation makes it so you can just copy and paste the stacks around 16:44:48 Maybe I misunderstood.. 16:46:41 Storing the stack in a cons list would be a perfect data structure.. If you create a continuation, the GC just won't collect that part of the list while there are still references on it 16:49:15 It might however, create memory leaks, depending on what's being held in local variables in that stack 16:54:54 githogori [~githogori@216.207.36.222] has joined #scheme 16:55:25 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 240 seconds] 16:55:39 -!- stepnem [~stepnem@176.119.broadband10.iol.cz] has quit [Quit: ZNC - http://znc.sourceforge.net] 16:56:20 -!- gravicappa [~gravicapp@80.90.116.82] has quit [Ping timeout: 260 seconds] 17:01:35 stepnem [~stepnem@176.119.broadband10.iol.cz] has joined #scheme 17:02:30 gtoast [~gtoast@99-100-70-120.lightspeed.sntcca.sbcglobal.net] has joined #scheme 17:09:33 -!- wisey [~Steven@host86-147-41-203.range86-147.btcentralplus.com] has quit [Quit: Leaving] 17:12:08 metasyntax|work [~taylor@fw-its-kt209a-2.dyn.ipfw.edu] has joined #scheme 17:20:05 -!- finnrobi [~robb@xvm-20-190.ghst.net] has quit [Ping timeout: 258 seconds] 17:20:11 finnrobi [~robb@xvm-20-190.ghst.net] has joined #scheme 17:24:00 -!- Nisstyre [~yours@infocalypse-net.info] has quit [Ping timeout: 240 seconds] 17:26:24 -!- ecraven [~nex@www.nexoid.at] has quit [Ping timeout: 240 seconds] 17:29:11 gravicappa [~gravicapp@ppp91-77-177-229.pppoe.mtu-net.ru] has joined #scheme 17:38:23 Nisstyre [~yours@infocalypse-net.info] has joined #scheme 17:40:27 certainty [~david@port-17726.pppoe.wtnet.de] has joined #scheme 17:43:03 Is it a bad idea to implement do as a macro for named let? 17:43:29 I'm trying to figure out what to give to the named let if no step expression is given to one of the do variables.. 17:43:43 Currently, it will pass an empty list if no step expression is given :/ 17:43:46 which is clearly wrong 17:48:37 -!- drwho [~drwho@208.7.157.62] has quit [Quit: leaving] 17:49:58 peterhil [~peterhil@193-64-22-193-nat.elisa-mobile.fi] has joined #scheme 17:50:54 turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has joined #scheme 17:54:23 -!- choas [~lars@p4FDC5F86.dip.t-dialin.net] has quit [Ping timeout: 248 seconds] 17:57:45 imran_sr [~imran@99-72-224-160.lightspeed.sntcca.sbcglobal.net] has joined #scheme 18:07:25 -!- soveran [~soveran@186.19.214.247] has quit [Ping timeout: 240 seconds] 18:12:40 imphasing: DO _is_ typically implemented using named LET. 18:13:05 imphasing: If no step expression is used, you pass the variable's value instead. 18:13:25 Ah, okay.. 18:13:27 e.g., (foo 0) is equivalent to (foo 0 foo). 18:13:29 I'll try that out, thanks 18:13:46 :-) 18:21:50 -!- githogori [~githogori@216.207.36.222] has quit [Remote host closed the connection] 18:28:19 Yay, got it working :) 18:28:21 Thanks again :D 18:30:24 -!- jao [~user@pdpc/supporter/professional/jao] has quit [Ping timeout: 240 seconds] 18:31:38 githogori [~githogori@216.207.36.222] has joined #scheme 18:32:48 -!- ToxicFrog [~ToxicFrog@24-246-40-169.cable.teksavvy.com] has quit [Ping timeout: 240 seconds] 18:33:41 :-D 18:34:52 Almost works, correction :P 18:34:55 Still not hygenic either 18:35:17 imphasing: What've you got so far? 18:35:31 I have the same problem with my do... Not hygienic 18:35:34 rudybot: (* -1 0.0) 18:35:34 imphasing: Are you using syntax-case, syntax-rules, or something else? 18:35:35 leppie: ; Value: -0.0 18:35:44 dostoyevsky: Ditto. 18:36:04 imphasing: In my experience DO is easiest to implement using syntax-case, but it can be done in syntax-rules too. 18:36:26 I want to implement syntax after I've tackled continuations 18:36:27 syntax-case FTW! 18:36:28 And, obviously, if you use syntax-rules, hygiene is guaranteed. 18:36:31 leppie: I agree. 18:36:39 coderdad [~coderdad@wsip-70-164-198-85.ok.ok.cox.net] has joined #scheme 18:36:50 cky: I'm implementing it in my own scheme interpreter, which offers something like CL's macros 18:36:54 I need to gensym it 18:37:16 imphasing: You should consider making your implementation support explicit renaming, at least, or else you can try to make psyntax work on it. 18:37:18 here it is so far: https://gist.github.com/1331483 18:37:27 If you make psyntax work on your implementation, then you get syntax-case. 18:37:31 imphasing: leave DO, no-one ever uses it anyways :) 18:37:32 Oh, cool.. 18:37:37 hehe :P 18:37:40 leppie: :-P 18:40:34 Is there anything else one could instead of DO in R5RS? 18:41:19 dostoyevsky: Most people use named LET directly. 18:41:33 dostoyevsky: If you can make your design use fold, map, or unfold, so much the better. 18:41:42 dostoyevsky: Alternatively, there's foof-loop. 18:41:51 scheme + loops feelsbadman 18:41:59 Fare [~Fare@74.125.59.116] has joined #scheme 18:42:02 imphasing: Why? Loops are natural in Scheme. 18:42:24 Iteration without using some recursive pattern seems wrong 18:42:35 imphasing: It _is_ (tail-)recursive. 18:42:58 imphasing: You've seen a named LET-based loop before, haven't you? 18:43:05 imphasing: All the looping is done using tail recursion. 18:43:06 I implemented it. 18:43:10 So yeah. 18:43:24 But it feels like I should use a functional function like map or something instead of recursive looping 18:43:32 choas [~lars@p4FDC5F86.dip.t-dialin.net] has joined #scheme 18:43:39 imphasing: Any time you can use map or fold or unfold, of course you should use it. 18:43:48 Actually I've found the let loop more confusing than DO... 18:44:02 imphasing: However, if your design doesn't fit well into those functions, a manual loop is often appropriate. 18:44:24 dostoyevsky: Really?!?!?! 18:44:34 Indeed, it just feels a little less idiomatic to me 18:44:43 dostoyevsky: Most Schemers I talk to find named LET much easier to grasp than DO. 18:44:44 the problem is rememebring DO's syntax 18:44:48 What leppie said. 18:45:03 I know DO's syntax very well, and I don't shy from using it, but named LET _is_ easier to read, even for me. 18:45:06 cky: I mean, DO does just naturally what I know from for() in C.. :-) 18:45:12 dostoyevsky: It's very misleading. 18:45:24 dostoyevsky: It "looks like" for loops but it doesn't behave like it. 18:45:56 why does scheme not have a FOR construct? :p 18:46:04 *cky* pukes. 18:46:13 ToxicFrog [~ToxicFrog@24-246-40-169.cable.teksavvy.com] has joined #scheme 18:46:17 Macro it! 18:46:22 *cky* pukes harder. 18:46:29 would be quite easy to write one using set! :) 18:46:34 So that there would be more homework for CS courses 18:46:37 Ewwwwww!!!! 18:46:44 - implement FOR in scheme 18:47:04 - explain what you thought of this assignment 18:47:16 Super-grossness, is my thoughts. ;-) 18:47:19 leppie: Because it's not needed often... 18:47:31 Hopefully you mean "ever" 18:47:59 :-) 18:48:12 imphasing: Then it shouldn't be in the standard 18:48:19 for isn't in the standard? 18:48:27 Oh maybe you meant do 18:48:38 True... 18:48:51 dostoyevsky: do != for 18:48:53 Racket has one... I think. :-) 18:48:59 dostoyevsky: do is very different from C-style for loops. 18:49:03 -!- tessier [~treed@mail.copilotco.com] has quit [Changing host] 18:49:03 tessier [~treed@kernel-panic/copilotco] has joined #scheme 18:49:09 dostoyevsky: Like I said, any similarity is an illusion. 18:49:22 dostoyevsky: For example, C-style for loops usually mutate variables. 18:49:27 it's not THAT different 18:49:29 dostoyevsky: Scheme's do loops does not mutate. 18:49:37 turbofail: It is, if you think about mutation, etc. 18:50:08 well it's different if you spit out escaping closures in the course of your do loop 18:50:34 s_chng [~stchang@login.ccs.neu.edu] has joined #scheme 18:51:02 but if you don't then they can be optimized into the same thing 18:51:15 turbofail: Just...C programmers think a lot in terms of mutation, and it won't help you write good Scheme if you retain that mindset. 18:51:57 Even if implementationally it's optimised into mutation anyway, as a Scheme programmer you should not be thinking in terms of mutation. 18:52:24 Well, when I see a statement like `(do ((i 0 (+ i 1))) ((= i 5)) (displayln i))' it looks very similar to the C-for-loop equivalent 18:53:20 dostoyevsky: Like I said, it looks like it, but behaviourally it's not the same. 18:53:23 dostoyevsky: Racket's `for' constructs do look like C's `for', but they're closer to Haskell's list comprehensions. 18:53:35 -!- gtoast [~gtoast@99-100-70-120.lightspeed.sntcca.sbcglobal.net] has quit [Quit: gtoast] 18:53:44 dostoyevsky: But what they are exactly doesn't matter, they're a joy to use! :D 18:53:53 cky: Well, scheme is very different from C... So there are many differences of course.. 18:54:18 stamourv: Yay list comprehensions. :-D 18:54:49 jcowan [c6b912cf@gateway/web/freenode/ip.198.185.18.207] has joined #scheme 18:55:05 X-Scale` [email@89.180.138.130] has joined #scheme 18:55:13 hoi 18:55:42 -!- X-Scale [email@sgi-ultra64.broker.freenet6.net] has quit [Ping timeout: 244 seconds] 18:56:27 Which reminds me that I have never missed for-loops in ruby... 18:56:47 -!- X-Scale` [email@89.180.138.130] has quit [Remote host closed the connection] 18:57:00 X-Scale [email@sgi-ultra64.broker.freenet6.net] has joined #scheme 18:57:53 yay r5rs examples run in my scheme for do now :D 18:57:55 What kinds of loops does Ruby have? 18:58:24 jcowan: a kind of do while, while loops, until loops.. 18:58:28 They like iterators over there, too? 18:58:33 for loops too 18:58:34 jcowan: each-type of loops are very common 18:58:37 lots of iterators yeah 18:58:48 my favorite way to loop with ruby is just collection.each 18:59:15 10.times {|i| puts i} 18:59:23 step is cool too 18:59:28 I've been writing endless python generators lately, it seems 18:59:38 You don't need a for-loop if your language provides lazy integer ranges. 19:00:43 but you do occasionally need ranges like -10..10 19:00:43 -!- choas [~lars@p4FDC5F86.dip.t-dialin.net] has quit [Ping timeout: 258 seconds] 19:00:50 (1..100).each { } :D 19:00:54 jcowan: True... I think ruby got this idea from Perl... 19:01:22 -!- joast [~rick@76.178.187.139] has quit [Quit: Leaving.] 19:02:02 X-Scale` [email@2001:470:1f14:135b::2] has joined #scheme 19:02:04 (each 1..100 {|i| displayln i }) 19:02:47 coffee-scheme 19:03:09 rudybot: (for-each displayln (iota 10)) 19:03:10 cky: your sandbox is ready 19:03:10 cky: error: reference to an identifier before its definition: iota in module: 'program 19:03:16 rudybot: (require srfi/1) 19:03:16 cky: Done. 19:03:17 rudybot: (for-each displayln (iota 10)) 19:03:18 cky: ; stdout: "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" 19:03:24 dostoyevsky: That wasn't so hard now, was it? 19:04:29 Hm, do I need to worry about the binding names in do for my macros sanitization purposes? I would think I only need to make sure the loop name is clean.. 19:05:00 -!- X-Scale [email@sgi-ultra64.broker.freenet6.net] has quit [Ping timeout: 244 seconds] 19:05:26 Here's my macro, with gensym for generating the loop name: https://gist.github.com/1331483 19:05:37 But I might need to do the same with the binding names :/ 19:05:40 I'm not sure though 19:07:15 imphasing: If you want real hygiene, you also need to rename the LET, IF, NOT, and BEGUN. 19:07:18 *BEGIN 19:07:21 -!- X-Scale` is now known as X-Scale 19:08:00 let, if, and begin shouldn't be a problem because my parser is bad and improper and doesn't make those atoms, instead just the primitives themselves 19:08:01 cky: It still doesn't feel very good... for-each will only work with lists... it's not a generic iteration construct. And you only could skip declaring the lambda because displayln is already a defined function... 19:08:06 I guess I need to read more about hygenic macros 19:08:06 Otherwise, if someone does something like (define not values) in the scope of the call to your do, then you're screwed. 19:08:15 Hm, yeah :/ 19:08:36 imphasing: Read up on explicit-renaming macros. 19:08:43 imphasing: You'll get a sense of what needs renaming in such a system. 19:08:54 great, thanks :) 19:08:57 :-) 19:09:15 *Fare* decides to resurrect the Boston Lisp Meeting. 19:09:26 Next meeting before the end of the year, probably mid-december. 19:09:48 dostoyevsky: For generic iteration, try using foof-loop. :-P 19:09:57 Disclaimer: I've never used it before. :-P 19:10:27 But I liked how the R author wrote: First we implemented a scheme language and then we changed the parser a little (with yacc) and then we suddenly had S-Plus compatible syntax... You can go everywhere from scheme, it seems. :-) 19:10:30 Fare: Woot! If only I were in Boston. But if you have a meeting in January, I'll try to make it if it coincides with a visit I may be making then. 19:10:59 dostoyevsky: Indeed. 19:11:15 I'm considering renaming the BLM to BDSM. Boston Dynamic System Meeting. Boston Dynamic and Static Meaning. Something like that. 19:11:27 Fare: Lol. 19:11:42 -!- luist [~luist@186.215.97.229] has quit [Quit: luist] 19:12:12 is syntax-case unhygenic in scheme? 19:12:25 imphasing: syntax-case is hygienic by default, with options to bend hygiene as necessary. 19:12:41 imphasing: syntax-rules is very similar to syntax-case, albeit without the options to bend hygiene. 19:12:45 Fare: Probably addresses the same people anyway 19:12:54 Ah, so it's an implementation-specific thing, not standard 19:13:03 imphasing: It's standard in R6RS. 19:13:12 Oh, ok. 19:13:18 *imphasing* is attempting to target r5rs 19:13:28 R5RS doesn't mandate syntax-case, no. 19:13:35 dostoyevsky, yup. I just want to be explicitly more open to practitioners of programming language that do not consider themselves part of the "Lisp" community. 19:13:38 It does mandate syntax-rules, but you can implement syntax-rules atop explicit-renaming. 19:13:42 Many implementations do. 19:13:53 e.g., Chicken and Chibi both have ER-based syntax-rules, IIRC. 19:14:48 Chibi has SC, which incorporates ER as a special case. 19:15:10 jcowan: Yes, Chibi has SC as the underlying system, however, most of its macros are actually using the ER layer. 19:15:16 Ah, didn't know that. 19:15:27 I have never braved init.scm 19:15:31 Fare: :D 19:15:31 Hehehehehe. 19:15:54 Fare: Re BDSM: Standard ML had a similar unfortunate collision with Seattle Men in Leather. 19:15:55 Fare: Careful, you might also invite users of bondage-and-discipline languages. ;-) 19:15:58 R7RS-small has only SR; -large will definitely have ER but may have other systems too, depending on votes in the WG. 19:16:23 There are only 17K TLAs; after that you have to go to ETLAs. 19:16:36 Fare: For a time, googling for SML returned the latter. 19:16:40 I might go to Boston if someone can provide a place to stay. 19:16:46 jcowan: I've not tried implementing any macro system, so here's the question I have: can an implementation easily support both ER and syntax-case? 19:16:50 cky: as long as their activities are consensual and not forced upon unwilling programmers, I'm fine with it. 19:16:52 Or does one exclude the other? 19:16:57 Fare: Fair enough. 19:17:25 cky: You can implement ER with a syntax-object based system (syntax-case). IIRC, eli had a blog post about that. 19:17:38 stamourv: Cool, that's awesome. 19:17:38 ER= explicit renaming? 19:17:43 Fare: Aye. 19:17:43 Yes. 19:17:49 SC=syntactic closures 19:17:58 -!- certainty [~david@port-17726.pppoe.wtnet.de] has quit [Quit: Lost terminal] 19:18:09 I thought SC was syntax-case 19:18:14 Fare: Nope. 19:18:33 We really need a useful abbrevation for syntax-case, to be sure. 19:18:33 choas [~lars@p4FDC5F86.dip.t-dialin.net] has joined #scheme 19:18:57 SX 19:19:04 aren't all those systems essentially equivalent in power? 19:19:09 Does one usually implement syntax as some kind of EXPAND that happens before EVAL is executed? 19:19:45 cky: SO? Syntax objects are what matter, not syntax-case itself. 19:19:47 Fare: Yes, but when it comes to comparing the systems, it helps to be able to refer to them unambiguously. :-P 19:20:13 Boston Association of Lisp Lovers & Schemers 19:20:19 stamourv: True. But, like, "SO" is not a commonly-used name for this, so, how do you get tractiot? 19:20:22 *traction 19:20:29 Fare: lol 19:20:36 Fare: Hahahahaha. 19:20:53 "Come hang out with us at BALLS" 19:22:33 ijp, Razz: http://tmp.barzilay.org/cont.txt -- it's a little long, but pretty thorough. 19:24:12 Fare: No -- IIRC, ER and SC have the same power, but I don't think that anyone came up with a `syntax-case' done on top of them. (I also think that there were claims that it cannot be done, Riastradh might have said that at some point.) 19:37:19 -!- choas [~lars@p4FDC5F86.dip.t-dialin.net] has quit [Ping timeout: 248 seconds] 19:41:26 homie [~levgue@xdsl-78-35-136-103.netcologne.de] has joined #scheme 19:42:18 wbooze [~levgue@xdsl-78-35-136-103.netcologne.de] has joined #scheme 19:42:34 -!- realitygrill [~realitygr@thewall.novi.lib.mi.us] has quit [Quit: realitygrill] 19:42:46 wingo [~wingo@90.164.198.39] has joined #scheme 19:44:18 It's always confused me how people talk about macros running in the compiler.. 19:44:28 Man I don't have a damn compiler, everything is runtime in my interpreter 19:44:59 It just hands back the rewritten AST to the evaluator to run again :/ 19:47:49 they really mean phase 1+ when they say compiler 19:48:00 but that terminology isn't standard, so they just say compiler 19:48:11 I have no phases :/ 19:48:19 I don't have scheme either I guess 19:48:53 Everything runs at the same time in my interpreter, macros are just a lambda that works on the AST directly, then has it's results re-evaluated 19:48:58 ecraven [~nex@www.nexoid.at] has joined #scheme 19:49:09 imphasing: imho the term compilation is only clearly defined in static languages like C... 19:49:25 oh.. well you will run into problems if you use macros a lot that way 19:50:17 jonrafkind: How so? 19:50:35 I have gensym, like CL 19:50:39 http://www.google.com/url?sa=t&rct=j&q=macros%2Byou%2Bwant%2Bit%2Bwhen&source=web&cd=1&ved=0CBsQFjAA&url=http%3A%2F%2Fwww.cs.utah.edu%2Fplt%2Fpublications%2Fmacromod.pdf&ei=iU2wTvi5HczUiAKB6OQg&usg=AFQjCNEfAgCctz349khKXcVQTxMEiAF0mQ 19:50:40 http://tinyurl.com/6cfufzv 19:52:37 So do most scheme has seperate macro expansion phases? 19:52:42 *schemes 19:52:46 *have.. 19:53:08 SHODAN [~shozan@c-a1b5e253.011-86-73746f30.cust.bredbandsbolaget.se] has joined #scheme 19:53:12 As in, they would do a pass over the AST and find out which function calls are macros, then expand them then and there instead of at runtime 19:54:30 -!- metasyntax|work [~taylor@fw-its-kt209a-2.dyn.ipfw.edu] has quit [Quit: WeeChat [quit]] 19:55:54 imphasing: check some implementation books :D 19:56:09 imphasing: there's Dybvig's Three Implementation Models for Scheme paper, though i have only begun it 19:56:28 Thanks I'll check it out :) 19:56:54 imphasing: There are different ways of doing things... I think ultimately what you want is no passes at all... Which means you will have a lot of freedom in using the language 19:59:24 imphasing, iirc racket does some passes over the syntax looking for macros and executing them. first it looks for phase 1 macros and executes those, then it looks for phase 2 macros inside phase 1 bodies and executes those, something ilke that 20:01:04 Hm, I see.. 20:01:39 realitygrill [~realitygr@thewall.novi.lib.mi.us] has joined #scheme 20:02:24 imphasing: The problem with trying to use CL-style macros in Scheme is that gensym isn't sufficient in Scheme. As I understand iht, CL has two other features that make the lack of hygiene less of a problem: 1. symbols live in packages, it's not just one big symbol namespace, and 2. CL has separate namespaces for functions and variables; Scheme doesn't. 20:03:12 imphasing: Because of that, things like hygiene is a lot more important in Scheme. 20:03:28 i don't think (2) matters all that much really 20:03:37 turbofail: Right, but (1) does make a difference. 20:04:10 sure 20:04:38 So it's not just shadowing primitive functions and locals that I have to worry about? 20:05:03 I could make it so macro expansion always happens in the top-level environment.. 20:06:27 What is it about the symbol namespaces that prevent this issue in CL? 20:07:58 Say you use "if", "let", etc. in a macro. As I understand it, it uses the namespace in effect at the defmacro for those. 20:08:07 s/namespace/package/ 20:08:16 rather than the one in effect at the point of macro invocation. 20:08:33 Ah, I understand. 20:08:36 Thanks again :) 20:08:40 Scheme's hygiene acheieves that, in a more robust fashion. 20:08:45 Cool. :-) 20:09:28 cky: More precisely, the default package at the time the macro was *read*. 20:09:37 jcowan: Thanks! :-) 20:09:50 That makes a lot of sense. 20:09:56 Because, it's the reader that resolves symbols. 20:10:04 And as almost all packages inherit from the LISP package, and since names in the LISP package can't be redefined in any way, hygiene is preserved at the expense of lexical scoping. 20:10:38 So do some schemes evalute macros in a special environment? That seems like an easy way to prevent shadowing.. 20:10:47 imphasing: The point is that in order to do Scheme-style hygiene, it is not enough to just examine macro calls: the whole input potentially has to be renamed. 20:11:35 AFAIK, the only Schemes that do not use a preprocessor approach are Wraith and SCM. 20:12:21 -!- coderdad [~coderdad@wsip-70-164-198-85.ok.ok.cox.net] has quit [Ping timeout: 276 seconds] 20:12:50 In the REPL, the preprocessing is done just after the input form is read. When processing files of source code, implemeentations vary about whether they read the whole file before doing anything else or process it piece by piece. 20:13:29 Hmm... I don't do any preprocessing, everything happens at the same time 20:14:24 Then you are not hygienic. Specifically, a macro writer can protect his clients from being influenced by his local bindings, but cannot protect his macro from being influenced by his clients. 20:14:42 If the macro contains a name the macro writer assumes to be free, but which is bound at the point of call, Bad Things. 20:15:01 s/bindings,/bindings by using packages or gensyms, 20:16:38 Non-hygienic macros are AFAIC playing with knives. 20:17:44 jcowan: I guess there's no way to do renaming without preprocessing, eh? 20:17:55 (I have not tried, so I wouldn't know.) 20:20:27 No, SCM does manage it using first-class environments. 20:20:40 A cure worse than the disease, IMO and that of many other people. 20:20:40 Ah. 20:20:44 Hehehehehe. 20:21:36 So it would be advisable to implement my macros with a seperate phase that handles rewriting symbols in macros calls 20:21:55 Most simple cases of non-hygienic macros strike me as pointless. I can see the merits of AIF, but is (aif it pred cons alt) really so much worse than (aif pred cons alt)? What's more, you can nest it. 20:22:08 But why would I need to rewrite the entire input? Isn't the macro expansion itself the only issue that exists? 20:22:33 I don't even know how that would play with call/cc and such.. 20:22:43 Macro calls would never BE macro calls in the resulting code I guess 20:22:45 imphasing: No, that is precisely the difference. 20:23:01 Suppose your macro author uses (let ...) in his macro. 20:23:25 or better, (begin ...) 20:24:23 Then if called in the context (let ((begin 10) (end 20)) (my-macro begin end)), the use of (begin ...) in the macro will be rewritten as (20 ...). 20:24:56 It's the same issue as static vs. dynamic scoping of variables, but transposed to the domain of macros. Hygienic macros use statically scoped names. 20:25:24 s/rewritten/evaluated 20:25:43 Oooh I think I get it, it's the lexical scoping that jacks everything up.. that's perfectly valid to do, shadow the definition of begin I guess.. 20:26:06 lusory_ [~bart@bb115-66-195-54.singnet.com.sg] has joined #scheme 20:26:09 soveran [~soveran@186.19.214.247] has joined #scheme 20:26:39 So besides that issue, of shadowing primitives, and the issue of coming up with symbols inside macros, is there anything else to hygenic macros? 20:27:10 That seems to be the basic idea, can't clash with defined symbols and can't jack with symbols that may already exist 20:27:42 gensym handles creating new symbols, but I have nothing that prevents shadowing symbols.. 20:27:54 I guess the shadowing is the complicated part of hygenic macros 20:28:29 ente_ [~daemon@barfooze.de] has joined #scheme 20:28:35 Well, it's not just primitives. 20:28:43 wbooze` [~levgue@xdsl-78-35-136-103.netcologne.de] has joined #scheme 20:28:50 -!- realitygrill [~realitygr@thewall.novi.lib.mi.us] has quit [Quit: realitygrill] 20:28:55 -!- lusory [~bart@bb115-66-195-54.singnet.com.sg] has quit [Ping timeout: 240 seconds] 20:28:58 -!- wbooze [~levgue@xdsl-78-35-136-103.netcologne.de] has quit [Read error: Connection reset by peer] 20:28:58 -!- ente [~daemon@unaffiliated/n0nsense] has quit [Ping timeout: 240 seconds] 20:28:59 Yeah, any symbol defined outside of the macro really 20:29:08 In CL, there are no locally defined macros, but in Scheme there are. So it's any name that is defined at the point of macro definition that can cause a hygiene conflict. 20:30:08 So if I had a seperate macro expansion phase that evaluated in ONLY the top-level environment, that along with gensym would give me hygenic macros.. 20:31:13 I don't know what you mean by "ONLY the top-level environment". Renaming has to be done on the whole of every form to be evaluated. 20:31:54 Yeah, I'm confusing myself here I think.. 20:32:25 I don't really need to expand the macro in a seperate phase I should think, but rename every symbol in a seperate phase rather 20:32:48 Blah, I don't even know what I'm talking about anymore. 20:34:00 -!- Guest49052 [~karl@pool-108-17-80-180.pitbpa.fios.verizon.net] has quit [Ping timeout: 240 seconds] 20:34:00 -!- zedstar [~john@fsf/member/zedstar] has quit [Ping timeout: 240 seconds] 20:34:42 zedstar [~john@cpc3-haye16-2-0-cust189.haye.cable.virginmedia.com] has joined #scheme 20:34:42 -!- zedstar [~john@cpc3-haye16-2-0-cust189.haye.cable.virginmedia.com] has quit [Changing host] 20:34:42 zedstar [~john@fsf/member/zedstar] has joined #scheme 20:34:43 -!- Hal9k [~Hal@unaffiliated/kusanagi] has quit [] 20:34:50 hi jcowan, i am surprised to see r7rs draft 4 on the wg wiki, why wasn't it announced yet on the mailing list? 20:36:21 *cky* proceeds to download. :-D 20:36:34 Guest49052 [~karl@pool-108-17-80-180.pitbpa.fios.verizon.net] has joined #scheme 20:38:57 jcowan, isn't macrolet "locally defined macros" ? 20:39:02 joast [~rick@76.178.187.139] has joined #scheme 20:45:33 luist [~luist@189.59.201.53] has joined #scheme 20:45:33 -!- luist [~luist@189.59.201.53] has quit [Remote host closed the connection] 20:45:38 luist [~luist@189.59.201.53] has joined #scheme 20:46:21 I guess I don't have hygene issues with my primitive functions because my parser is wrong and parses special forms directly to their primitive function instead of a symbol 20:46:46 If you're using some non-primitive function in the macro though, that's going to ruin everything 20:47:12 If I could capture the environment the macro was defined in, I could implement a rename function that mapped a symbol to the value at the time of creation 20:47:39 Then use that rename function in the macro definitions, and boom hygenic macros 20:47:41 I think. 20:48:32 As can be shown in my delay macro, using make-promise from r5rs.. 20:48:40 If I redefine make-promise, all hell will break lose 20:50:15 in my scheme, (let ((if 1)) if) won't evaluate, since if is parsed directly to the primitive function 'if' 20:50:30 s/scheme/scheme-like/ 20:51:51 I guess a syntactic closure is the concept I was describing, where I capture the environment a macro was defined in.. 21:00:20 Fare: So it is; my bad. 21:00:41 denisw: I don't know why it isn't, probably one of two factors: Alex is really busy, and draft 5 is forthcoming shortly. 21:00:51 drwho [~drwho@static-76-160-37-137.dsl.cavtel.net] has joined #scheme 21:01:19 (CL macros are bad enough as is without having to make them look worse) 21:01:29 (and yet, they are good enough for a lot of stuff) 21:01:56 We published draft 4 mostly for the benefit of Scheme 2011. 21:02:02 (the conference0 21:02:03 ) 21:02:06 Hal9k [~Hal@unaffiliated/kusanagi] has joined #scheme 21:02:21 I confess to never using local macros either in CL or Scheme 21:03:49 jcowan, btw, if you ever pass by Boston, please give a speak at the BLM, or however we name it 21:03:56 jcowan, I understand. what about wg2? will that start its work again soon? i am seriously thinking about joining, but am unsure about the required previous experience and responsibilities 21:04:22 The main requirement is a willingness to do some work. 21:04:43 We have a lot of packages to specify, which mainly means to see what their function points are. 21:05:28 I am going to attempt to divert people away from debates on names, argument order, and similar low-level issues, given that the module system makes it easy to redefine these to suit yourself. 21:05:52 Exactly when we start is up to the Steering Committee, but I would guess sometime early in the New Year. 21:06:39 ("Package" is an informal term for one or more libraries.) 21:08:38 jcowan, cool, doing some work is fine. i even actually *like* to write :) 21:10:32 In that case, feel free to look at StandardDocket and then send me some text, which I will wikify and post. You needn't wait for the official relaunch, since it's just a proposal. 21:10:41 -!- pothos [~pothos@111-240-174-73.dynamic.hinet.net] has quit [Read error: Connection reset by peer] 21:12:12 i'll see if i can find something there 21:12:47 pothos_ [~pothos@111-240-180-93.dynamic.hinet.net] has joined #scheme 21:12:56 Okay. Proposals for packages that currently have none are preferred, but comments or alternatives to existing proposals are good too. This is not the time to do close editing, though, just substantive change. 21:13:11 *jcowan* extends the invitation to make WG2 proposals to the whole channel. 21:13:30 http://trac.sacrideo.us/wg/wiki/StandardDocket 21:15:25 -!- pothos_ is now known as pothos 21:15:26 -!- pothos [~pothos@111-240-180-93.dynamic.hinet.net] has quit [Read error: Connection reset by peer] 21:15:46 pothos_ [~pothos@111-240-180-93.dynamic.hinet.net] has joined #scheme 21:15:59 -!- pothos_ is now known as pothos 21:17:10 jcowan: do you want comments on that draft? if so, then announce it. 21:17:48 *wingo* vanishes 21:18:31 jcowan, hm that pathnames proposal seems pretty heavy, can't we get away with just a type for standard uris these days? 21:18:36 Given the timing, I think we'll most likely announce draft 5 instead. Integers are cheap. 21:19:34 denisw: Well, it's meant to handle ordinary filenames as well as URIs. Lots of programs still work in terms of filenames. 21:20:39 8 of the 11 components are required for URIs; the overhead of device, name, and type (extension) isn't that much. 21:21:10 (wingo: pretty off-topic but have you actually created a prototype for the "gnu autonomous cloud" proposal you made in http://wingolog.org/archives/2010/04/10/towards-a-gnu-autonomous-cloud ? i just came across this today and found it pretty interesting, i am myself constantly thinking about a secure open facebook replacement) 21:24:13 jcowan, i just feel that intertwining those two introduces more complexity than its worth. having dedicated uri objects and using strings for filenames (with utility procedures for joining etc) should be enough on today's systems and serves many systems (java, .net, several scripting languages etc.) well enough 21:25:56 Strings as filenames is a big problem when you need to work on both Windows and Posix, which have very different rules. 21:26:18 Merging filenames and URIs may be more questionable, but they do share an awful lot. 21:26:27 Windows paths are a really scary ball of mud 21:27:03 see http://pre.racket-lang.org/docs/html/reference/windowspaths.html?q=path%3F for evidence 21:27:26 When configuring Chicken for MinGW, for example, you have to specify the prefix and the bootstrap compiler with different kinds of slashes. 21:28:15 that's really the least of the problems 21:28:24 -!- wingo [~wingo@90.164.198.39] has quit [Ping timeout: 240 seconds] 21:28:26 Indeed. 21:28:27 once you start learning about UNC paths and drive letters 21:28:45 I do handle UNC paths, but punt (in the same way Racket does) when it comes to drive-specific relative paths. 21:28:50 All kinds of perversions out there 21:29:08 In this case, the perverts are in the majority. 21:29:15 yeah, i wonder if any languages handle drive-relative paths natively 21:29:17 but if you have procedures for constructing paths (path-join, path-parent etc.) this shouldn't be much of an issue 21:29:31 Which somewhat undermines the definition of "perversion". 21:29:53 that would be less invasive than having everything accept pathnames in addition to strings 21:30:10 There aren't really very many everythings in question. 21:30:26 denisw: there are lots of things where strings != pathnames 21:30:33 6 procedures in R7RS-small 21:30:38 depending on the unicode encoding, for example 21:31:32 Yes, that's another issue. We pretend filenames are strings, but really they aren't. In Posix they are octet sequences with certain octets forbidden; in Windows they are UCS-2 sequences with certain code points forbidden. 21:31:47 comparison on windows vs unix changes case senstivity, for example 21:31:49 At one time R7RS-small had special hacks for this, but they were removed. 21:32:28 samth: I don't try to get case sensitivity right: it's just the thin edge of the wedge. 21:32:44 There is in general no way to determine if two paths/URIs refer to the same resource or not. 21:33:13 hm, that still all sounds more like getting the per-platform implementation right than an inherent problem with strings-as-paths 21:33:15 pathname= just does equal? comparison componentwise. 21:34:48 e.g., it shouldn't be hard for an implementation to convert all path strings to UCS-2 before giving them to the win32 api 21:35:32 Oh yes, certainly. But defining path constructors and deconstructors without a datatype to process them through is very messy. 21:35:42 but string->ucs2 isn't a function on strings 21:36:00 well, maybe that is, but certainly the posix encoding isn't 21:36:05 depends on the locale 21:36:11 No, neither one is. 21:36:30 :"+" e.g. is a valid Posix pathname but not valid in Windows. 21:36:49 s/:/ 21:36:50 well, signal an error then 21:36:59 the scheme implementation can detect this 21:37:22 (if it knows the platform it runs on) 21:37:44 Not unless it knows all about what devices are mounted where. 21:37:55 Windows here really means FAT32/NTFS 21:38:00 -!- Fare [~Fare@74.125.59.116] has quit [Ping timeout: 240 seconds] 21:38:21 in any case, i don't know how we could hide any of this with explicit pathname objects 21:38:37 so java's File.getAbsolutePath() handles Windows drive-relative pathnames 21:38:45 we still need to initialize those with strings at some point 21:39:40 jcowan, what does knowing mounted devices have to do with "+"? 21:40:32 -!- pandeiro [~pandeiro@177.32.216.216] has quit [Quit: Out of quarters] 21:41:05 On a Posix system, if you have mounted a FAT or NTFS volume on /media/windows, you cannot create /media/windows/+, but you can create /+. 21:41:31 Anyway, that has nothing to do with pathnames; it is just saying that string->ucs2pathname is not a function on strings. 21:41:38 s/pathnames/pathname objects 21:43:21 The point is that you can construct a pathname object from its components without needing to know the correct syntax. 21:44:03 Or manipulate existing pathnames using ordinary Scheme functions without having to parse and reconstruct the syntax. 21:44:10 you could do this with utility functions too 21:44:34 ok, those would require reconstruction that's true 21:44:44 For example, if you want to change .scm to .o in a pathname string, that's very easy. 21:44:58 anyway, gotta run 21:45:15 i hope we'll hear from another soon 21:45:15 bye 21:45:21 Okay. 21:46:27 -!- denisw [~denisw@dslb-188-102-103-185.pools.arcor-ip.net] has quit [Remote host closed the connection] 21:49:42 -!- ente_ is now known as ente 21:49:42 -!- ente [~daemon@barfooze.de] has quit [Changing host] 21:49:43 ente [~daemon@unaffiliated/n0nsense] has joined #scheme 21:51:28 lbc [~quassel@1908ds1-aboes.0.fullrate.dk] has joined #scheme 21:55:59 -!- gravicappa [~gravicapp@ppp91-77-177-229.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 22:18:51 -!- ski [~slj@c83-254-21-112.bredband.comhem.se] has quit [Ping timeout: 255 seconds] 22:21:01 ski [~slj@c83-254-21-112.bredband.comhem.se] has joined #scheme 22:22:06 pandeiro [~pandeiro@177.32.216.216] has joined #scheme 22:24:57 -!- turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has quit [Ping timeout: 276 seconds] 22:31:04 turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has joined #scheme 22:46:48 -!- turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 22:49:42 -!- jcowan [c6b912cf@gateway/web/freenode/ip.198.185.18.207] has quit [Quit: Page closed] 22:51:18 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Quit: Computer has gone to sleep.] 22:52:30 Giomancer [~Gio@adsl-76-231-35-17.dsl.irvnca.sbcglobal.net] has joined #scheme 22:59:19 interglacial [~interglac@95.149.11.120] has joined #scheme 23:05:34 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 252 seconds] 23:06:32 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 23:12:24 -!- homie [~levgue@xdsl-78-35-136-103.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 23:12:30 -!- wbooze` [~levgue@xdsl-78-35-136-103.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 23:27:09 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 23:29:36 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Ping timeout: 240 seconds] 23:31:30 dnolen [~davidnole@pool-68-161-99-216.ny325.east.verizon.net] has joined #scheme 23:32:08 -!- drwho [~drwho@static-76-160-37-137.dsl.cavtel.net] has quit [Quit: leaving] 23:42:40 -!- githogori [~githogori@216.207.36.222] has quit [Remote host closed the connection] 23:50:26 drwho [~drwho@static-76-160-37-137.dsl.cavtel.net] has joined #scheme 23:59:11 \ 23:59:30 ?