00:00:40 weirdo [~sthalik@d135-185.icpnet.pl] has joined #scheme 00:01:41 soveran [~soveran@cpe-76-169-18-226.socal.res.rr.com] has joined #scheme 00:05:49 DrDuck [~duck@146.229.119.187] has joined #scheme 00:06:31 zelak [~zelak@pdpc/supporter/student/zelak] has joined #scheme 00:06:45 -!- zelak [~zelak@pdpc/supporter/student/zelak] has quit [Remote host closed the connection] 00:07:17 -!- srid [~srid@unaffiliated/srid] has quit [Quit: Computer has gone to sleep.] 00:12:01 pumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 00:13:29 xale [~xale@2001:4b98:dc0:51:216:3eff:fef2:58dd] has joined #scheme 00:14:34 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 264 seconds] 00:14:46 -!- pumpkin is now known as copumpkin 00:17:39 -!- peterbb [~peterbb@146.247.161.37] has quit [Ping timeout: 250 seconds] 00:18:10 -!- pygospa [~TheRealPy@kiel-5f77b45b.pool.mediaWays.net] has quit [Ping timeout: 260 seconds] 00:20:05 pygospa [~TheRealPy@kiel-d9bfdc1b.pool.mediaWays.net] has joined #scheme 00:23:28 -!- githogori [~githogori@216.207.36.222] has quit [Remote host closed the connection] 00:27:26 hussaibi [~hussaibi@wirewall.cs.toronto.edu] has joined #scheme 00:27:28 hussaibi_ [~hussaibi@wirewall.cs.toronto.edu] has joined #scheme 00:42:21 -!- dsmith_ is now known as dsmith 00:45:50 hakkum [~hakkum@c-67-181-176-186.hsd1.ca.comcast.net] has joined #scheme 00:49:17 -!- MrFahrenheit [~RageOfTho@users-146-176.vinet.ba] has quit [Ping timeout: 258 seconds] 00:55:22 srid [~srid@unaffiliated/srid] has joined #scheme 01:02:35 -!- srid [~srid@unaffiliated/srid] has quit [Quit: Computer has gone to sleep.] 01:07:57 -!- soveran [~soveran@cpe-76-169-18-226.socal.res.rr.com] has quit [Remote host closed the connection] 01:10:52 dnolen [~davidnole@ool-ad02d909.dyn.optonline.net] has joined #scheme 01:19:19 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 252 seconds] 01:29:30 -!- oldpier [~oldpier@nusnet-188-149.dynip.nus.edu.sg] has quit [Ping timeout: 240 seconds] 01:32:34 -!- hakkum [~hakkum@c-67-181-176-186.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 01:33:19 jkraemer [~jkraemer@74-95-7-186-SFBA.hfc.comcastbusiness.net] has joined #scheme 01:38:39 srid [~srid@unaffiliated/srid] has joined #scheme 01:42:08 oldpier [~oldpier@137.132.32.21] has joined #scheme 01:42:10 -!- tali713 [~tali713@c-75-72-220-197.hsd1.mn.comcast.net] has quit [Ping timeout: 264 seconds] 01:43:28 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 01:46:05 jcowan [~John@cpe-74-68-112-189.nyc.res.rr.com] has joined #scheme 01:48:21 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: 25] 01:51:36 tali713 [~tali713@c-75-72-220-197.hsd1.mn.comcast.net] has joined #scheme 02:02:23 githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has joined #scheme 02:03:31 jonrafkind [~jon@jonr5.dsl.xmission.com] has joined #scheme 02:08:33 hoi 02:12:40 -!- turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 02:12:53 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 02:28:06 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 02:29:06 nisstyre_ [~nisstyre@infocalypse-net.info] has joined #scheme 02:29:08 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Remote host closed the connection] 02:30:41 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 250 seconds] 02:33:04 -!- hussaibi [~hussaibi@wirewall.cs.toronto.edu] has quit [Ping timeout: 250 seconds] 02:33:06 -!- hussaibi_ [~hussaibi@wirewall.cs.toronto.edu] has quit [Ping timeout: 260 seconds] 02:33:36 -!- nisstyre_ [~nisstyre@infocalypse-net.info] has quit [Ping timeout: 258 seconds] 02:35:07 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 02:36:25 pnkfelix [~Adium@c-71-225-165-188.hsd1.pa.comcast.net] has joined #scheme 02:37:35 -!- dfeuer_ [~dfeuer@pool-71-178-51-188.washdc.fios.verizon.net] has quit [Read error: Connection reset by peer] 02:52:38 zanes [~zane@108-90-245-81.lightspeed.cicril.sbcglobal.net] has joined #scheme 03:03:05 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 03:07:11 -!- DrDuck [~duck@146.229.119.187] has quit [Ping timeout: 240 seconds] 03:11:35 hussaibi [~hussaibi@wirewall.cs.toronto.edu] has joined #scheme 03:11:36 hussaibi_ [~hussaibi@wirewall.cs.toronto.edu] has joined #scheme 03:17:49 -!- PreciousMetals [~Heart@unaffiliated/colours] has quit [Ping timeout: 246 seconds] 03:20:57 -!- homie [~levgue@xdsl-78-35-130-115.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 03:23:39 leo2007 [~leo@58.22.113.104] has joined #scheme 03:24:30 -!- hussaibi [~hussaibi@wirewall.cs.toronto.edu] has quit [Ping timeout: 240 seconds] 03:24:51 -!- hussaibi_ [~hussaibi@wirewall.cs.toronto.edu] has quit [Ping timeout: 250 seconds] 03:27:45 -!- jcowan [~John@cpe-74-68-112-189.nyc.res.rr.com] has quit [Quit: Leaving] 03:30:01 PreciousMetals [~Heart@unaffiliated/colours] has joined #scheme 03:31:21 ice_man [~user@CPE0024d23789ef-CM78cd8e6e5ff5.cpe.net.cable.rogers.com] has joined #scheme 03:32:54 -!- dnolen [~davidnole@ool-ad02d909.dyn.optonline.net] has quit [Quit: dnolen] 03:33:39 I can use define-syntax with syntax-rules to rename both define-syntax and define, but when I try to rename syntax-rules I get an error. How can I rename syntax-rules? 03:36:09 ice_man: Which Scheme implementation are you using? 03:36:25 ice_man: I've only done this using Guile, so your results vary if you use a different implementation, but the principle is similar: 03:39:12 You import define-syntax and syntax-rules from your system module (the one that the system uses to provide your syntax-rules) under different names. (e.g., (use-modules ((guile) #:select (syntax-rules) #:renamer (symbol-prefix-proc 'guile-))).) 03:39:31 In Guile, that imports syntax-rules from the (guile) module into the current module under the name guile-syntax-rules. 03:39:48 Then, when defining your own syntax-rules, just delegate to guile-syntax-rules as necessary. 03:40:33 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 03:40:57 If you're using an implementation that doesn't have modules, then you're SOL. :-( 03:41:14 -!- tupi_ [~david@189.60.160.15] has quit [Quit: Leaving] 03:47:48 cky: thanks! I'm actually using racket with the "#lang r5rs" directive. I'm trying to keep things minimal. 03:49:20 -!- jimmyrcom [~fold@75.53.44.225] has quit [Ping timeout: 250 seconds] 03:49:24 ice_man: Well, R5RS doesn't provide that functionality (to rename syntax forms). So if you're using R5RS mode, you're in the SOL camp. -P 03:50:14 ice_man: eli (a core Racket developer on this channel) takes great delight in telling people to avoid using R5RS mode unless that's really what you're asking for. :-P 03:50:21 -!- oldpier [~oldpier@137.132.32.21] has quit [Ping timeout: 276 seconds] 03:50:27 cky: dang. That's too bad...does r6rs provide that, or is it implementation-specific? 03:50:36 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 03:51:04 ice_man: R6RS has modules. Just use the module system to your advantage. 03:53:35 cky: ah, I see. I haven't actually played around with r6rs too much yet. Is it widely adopted? 03:55:16 ice_man: Some implementations have it (Racket, Chez, Larceny, Guile); some implementations are written from scratch to be R6RS (IronScheme, Ikarus, Ypsilon, etc., if I remember right); and many other implementations don't support it. :-P 03:55:23 Brendan_T [~brendan@static.112.22.47.78.clients.your-server.de] has joined #scheme 03:55:35 ice_man: For example, MIT Scheme explicitly has no plans to support R6RS. 03:59:16 cky: Ah, thank you. Is there a reason I should use any implementation other than Racket? 03:59:19 dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has joined #scheme 04:04:01 ice_man: If you're just starting out, Racket is just fine. If another implementation is better for a specific project, you'll know it soon enough. :-) 04:07:09 cky: Makes sense. I was mostly just curious. I really like the minimalism of r5rs. What's the difference between r6rs and the Racket language? 04:09:51 cky: I get that r6rs is defined by a standard and that Racket is defined ad hoc, but I was just wondering if there are any overarching differences in their "philosophies"? 04:12:38 oldpier [~oldpier@nusnet-219-43.dynip.nus.edu.sg] has joined #scheme 04:14:00 -!- zanes [~zane@108-90-245-81.lightspeed.cicril.sbcglobal.net] has quit [] 04:24:04 ice_man: That's a question that the Racket devs are much more qualified to answer than I am. 04:24:40 ice_man: If you can't find eli on-channel (because he's away or something), just post a question on Stack Overflow tagged [racket]. Eli monitors that tag frequently. 04:25:06 ice_man: (I know, because it's one of the tags I monitor also, and I notice that he often gives very good answers to questions.) 04:26:19 cky: Cool, thanks! :) 04:27:00 ice_man: (Not sure if you've used Stack Overflow a lot. When I say "tagged [racket]", I don't mean put [racket] in the title, but rather make sure "racket" is one of the tags for the question. :-P) 04:27:49 cky: haha, thanks, I totally would have just put "What's the difference between ... [Racket]" 04:28:09 :-) 04:28:38 cky: thanks again! 04:28:39 -!- ice_man [~user@CPE0024d23789ef-CM78cd8e6e5ff5.cpe.net.cable.rogers.com] has left #scheme 04:31:02 zanes [~zane@108-90-245-81.lightspeed.cicril.sbcglobal.net] has joined #scheme 04:35:15 -!- dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has quit [Quit: dnolen] 04:52:41 -!- oldpier [~oldpier@nusnet-219-43.dynip.nus.edu.sg] has quit [Ping timeout: 240 seconds] 04:53:18 HG` [~HG@p5DC04D3A.dip.t-dialin.net] has joined #scheme 04:55:05 -!- HG` [~HG@p5DC04D3A.dip.t-dialin.net] has quit [Client Quit] 04:57:51 oldpier [~oldpier@137.132.32.21] has joined #scheme 04:58:52 Bah. 04:59:29 cky: The thing to keep in mind is that Racket's R5RS is very stricly R5RS, so you get almost nothing besides it. 05:08:38 -!- oldpier [~oldpier@137.132.32.21] has quit [Ping timeout: 250 seconds] 05:16:13 gravicappa [~gravicapp@ppp91-77-173-7.pppoe.mtu-net.ru] has joined #scheme 05:24:04 jrapdx [~jra@c-98-246-157-58.hsd1.or.comcast.net] has joined #scheme 05:28:48 -!- rvn_ [~rvn@77.107.164.131] has quit [Quit: Leaving] 05:30:37 -!- phax [~phax@unaffiliated/phax] has quit [Quit: Leaving] 05:31:38 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 05:34:32 oldpier [~oldpier@nusnet-229-211.dynip.nus.edu.sg] has joined #scheme 05:52:11 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Quit: Leaving] 05:58:35 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 06:00:43 are there any linear algebra libraries for scheme? 06:01:44 -!- jkraemer [~jkraemer@74-95-7-186-SFBA.hfc.comcastbusiness.net] has quit [Quit: This computer has gone to sleep] 06:01:58 -!- oldpier [~oldpier@nusnet-229-211.dynip.nus.edu.sg] has quit [Ping timeout: 246 seconds] 06:02:40 jewel [~jewel@196-209-224-179.dynamic.isadsl.co.za] has joined #scheme 06:05:48 new2net [~new2net@unaffiliated/new2net] has joined #scheme 06:06:04 -!- srid [~srid@unaffiliated/srid] has quit [Quit: Computer has gone to sleep.] 06:07:10 oldpier [~oldpier@nusnet-229-211.dynip.nus.edu.sg] has joined #scheme 06:15:59 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 06:16:45 weirdo2 [~sthalik@d135-185.icpnet.pl] has joined #scheme 06:17:29 -!- weirdo [~sthalik@d135-185.icpnet.pl] has quit [Disconnected by services] 06:17:41 -!- weirdo2 is now known as weirdo 06:19:55 -!- jewel [~jewel@196-209-224-179.dynamic.isadsl.co.za] has quit [Ping timeout: 250 seconds] 06:20:24 -!- arcfide [1000@c-69-136-7-94.hsd1.in.comcast.net] has left #scheme 06:20:36 arcfide [1000@c-69-136-7-94.hsd1.in.comcast.net] has joined #scheme 06:27:10 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 264 seconds] 06:29:10 -!- jonrafkind [~jon@jonr5.dsl.xmission.com] has quit [Ping timeout: 260 seconds] 06:31:22 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 06:43:37 realitygrill [~realitygr@c-24-5-7-139.hsd1.ca.comcast.net] has joined #scheme 06:46:32 -!- arcfide [1000@c-69-136-7-94.hsd1.in.comcast.net] has quit [Read error: Connection reset by peer] 06:46:51 -!- oldpier [~oldpier@nusnet-229-211.dynip.nus.edu.sg] has quit [Ping timeout: 260 seconds] 06:47:09 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving] 06:49:10 wow, it's impossible to test malloc returning NULL in OS X 06:49:56 it can return NULL for 0 bytes alloc? 06:50:13 first it uses up all available RAM, then it turns your entire hard disk into swap, then it starts killing _other_ processes 06:50:45 -!- pnkfelix [~Adium@c-71-225-165-188.hsd1.pa.comcast.net] has quit [Quit: Leaving.] 06:50:49 next it'll start hacking into other computers and giving you a distributed memory system, just so it doesn't have to ever return NULL 06:52:00 I'm going to have to write an link in my own malloc just to do testing. 06:52:30 i'm afraid it'll behave the same 06:52:40 since it's underlying mmap/sbrk that causes it 06:52:52 unless you limit the amount of pages on purpose 06:53:02 well yeah, that was the idea 06:53:51 foof: read about memory overcommit, maybe it can be tuned/turned off on OSX 06:54:17 I know how to do that on Linux. 06:54:17 or use ulimit to limit memory usage, yes 06:56:09 but I won't be able to use my computer for a while until the thrashing stops 06:56:22 *foof* wanders off 06:59:42 oldpier [~oldpier@137.132.45.250] has joined #scheme 07:01:35 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 07:14:12 hkBst [~quassel@gentoo/developer/hkbst] has joined #scheme 07:14:59 -!- leo2007 [~leo@58.22.113.104] has quit [Quit: rcirc on GNU Emacs 23.3.50.1] 07:15:42 -!- oldpier [~oldpier@137.132.45.250] has quit [Ping timeout: 258 seconds] 07:32:10 -!- betta_y_omega [~betta_y_o@90.166.231.220] has quit [Ping timeout: 258 seconds] 07:32:56 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 258 seconds] 07:33:00 leo2007 [~leo@58.22.114.194] has joined #scheme 07:35:33 betta_y_omega [~betta_y_o@90.166.231.220] has joined #scheme 07:45:36 foof: kill -9 ;) 07:58:28 oldpier [~oldpier@137.132.45.250] has joined #scheme 08:00:05 wingo [~wingo@90.164.198.39] has joined #scheme 08:02:52 amoe [~amoe@cpc3-brig16-2-0-cust858.3-3.cable.virginmedia.com] has joined #scheme 08:11:34 -!- X-Scale [email@89.180.191.196] has quit [Ping timeout: 264 seconds] 08:28:23 DrDuck [~duck@146.229.117.112] has joined #scheme 08:40:10 -!- oldpier [~oldpier@137.132.45.250] has quit [Ping timeout: 240 seconds] 08:40:33 araujo [~araujo@190.73.44.29] has joined #scheme 08:40:34 -!- araujo [~araujo@190.73.44.29] has quit [Changing host] 08:40:34 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 08:40:41 oldpier [~oldpier@137.132.45.250] has joined #scheme 08:49:40 foof: ever tried ulimit? 08:57:05 replore_ [~replore@ntkngw133234.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 09:00:36 masm [~masm@bl15-72-220.dsl.telepac.pt] has joined #scheme 09:04:41 -!- DrDuck [~duck@146.229.117.112] has quit [Ping timeout: 240 seconds] 09:05:10 DrDuck [~duck@146.229.117.112] has joined #scheme 09:12:29 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has left #scheme 09:20:31 pdelgallego [~pdelgalle@1385159933.dhcp.dbnet.dk] has joined #scheme 09:21:13 dfeuer [~dfeuer@wikimedia/Dfeuer] has joined #scheme 09:33:40 -!- replore_ [~replore@ntkngw133234.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 09:34:22 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 09:36:36 -!- oldpier [~oldpier@137.132.45.250] has quit [Ping timeout: 260 seconds] 09:37:02 -!- ASau [~user@95-24-221-224.broadband.corbina.ru] has quit [Quit: off] 09:46:50 -!- leo2007 [~leo@58.22.114.194] has quit [Ping timeout: 250 seconds] 09:58:55 oldpier [~oldpier@137.132.45.250] has joined #scheme 10:00:22 jimmyrcom [~fold@adsl-75-53-44-225.dsl.rcsntx.sbcglobal.net] has joined #scheme 10:01:49 gavino [47bd073a@gateway/web/freenode/ip.71.189.7.58] has joined #scheme 10:02:09 is there any scheme with a very small like 10-40 line webserver for static content only? 10:02:34 you mean for files? 10:02:53 you mean for trolls? 10:03:00 ah right ;-) 10:03:04 thanks C-Keen 10:03:20 I wish you a pleasant day wingo :) 10:03:27 likewise :) 10:04:24 c-keen or rkeene I presume 10:05:27 hows the holding to old beliefs going? 10:06:56 -!- DrDuck [~duck@146.229.117.112] has quit [Ping timeout: 240 seconds] 10:16:35 whitequark [~whitequar@whitequark.static.corbina.ru] has joined #scheme 10:16:56 Is anyone aware of a Scheme implementation able to run on an ARM microcontroller with 8kB of RAM? 10:17:43 whitequark: picobit, perhaps 10:49:03 Kajtek [~paniwladc@nat4-230.ghnet.pl] has joined #scheme 10:59:50 sstrickl [~sstrickl@dublin.ccs.neu.edu] has joined #scheme 11:08:11 -!- DGASAU [~user@91.218.144.129] has quit [Ping timeout: 260 seconds] 11:12:51 DGASAU [~user@91.218.144.129] has joined #scheme 11:18:55 -!- elly [~elly@atheme/member/elly] has quit [Ping timeout: 250 seconds] 11:19:30 elly [~elly@atheme/member/elly] has joined #scheme 11:27:56 -!- gavino [47bd073a@gateway/web/freenode/ip.71.189.7.58] has quit [Ping timeout: 252 seconds] 11:28:25 leo2007 [~leo@58.22.114.186] has joined #scheme 11:31:29 -!- Modius [~Modius@cpe-70-123-140-183.austin.res.rr.com] has quit [Quit: "Object-oriented design" is an oxymoron] 11:32:34 -!- oldpier [~oldpier@137.132.45.250] has quit [Ping timeout: 264 seconds] 11:35:12 -!- gravicappa [~gravicapp@ppp91-77-173-7.pppoe.mtu-net.ru] has quit [Ping timeout: 258 seconds] 11:36:51 wingo: yep, examining it currently (not the original, but the Racket port on github) 11:42:27 lewis1711 [~lewis@125-239-214-91.jetstream.xtra.co.nz] has joined #scheme 11:45:05 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 11:50:16 dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has joined #scheme 11:56:57 -!- Euthydemus [~euthydemu@unaffiliated/euthydemus] has quit [Read error: Connection reset by peer] 11:57:25 Euthydemus [~euthydemu@unaffiliated/euthydemus] has joined #scheme 12:10:42 gravicappa [~gravicapp@ppp91-77-173-7.pppoe.mtu-net.ru] has joined #scheme 12:14:34 DrDuck [~duck@146.229.117.112] has joined #scheme 12:21:08 oldpier [~oldpier@nusnet-188-149.dynip.nus.edu.sg] has joined #scheme 12:58:55 -!- DrDuck [~duck@146.229.117.112] has quit [Ping timeout: 252 seconds] 13:00:15 -!- zanes [~zane@108-90-245-81.lightspeed.cicril.sbcglobal.net] has quit [] 13:12:55 genieliu [~genieliu@59.78.62.120] has joined #scheme 13:14:03 -!- genieliu [~genieliu@59.78.62.120] has quit [Client Quit] 13:14:10 genieliu [~genieliu@59.78.62.120] has joined #scheme 13:21:07 -!- lewis1711 [~lewis@125-239-214-91.jetstream.xtra.co.nz] has left #scheme 13:29:48 rvn_ [~rvn@77.107.164.131] has joined #scheme 13:32:35 zanes [~zane@108-90-245-81.lightspeed.cicril.sbcglobal.net] has joined #scheme 13:41:50 MrFahrenheit [~RageOfTho@users-146-176.vinet.ba] has joined #scheme 13:43:55 -!- dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has quit [Quit: dnolen] 13:52:01 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 14:02:37 phax [~phax@adsl-68-73-148-217.dsl.ipltin.ameritech.net] has joined #scheme 14:02:37 -!- phax [~phax@adsl-68-73-148-217.dsl.ipltin.ameritech.net] has quit [Changing host] 14:02:37 phax [~phax@unaffiliated/phax] has joined #scheme 14:06:51 -!- realitygrill [~realitygr@c-24-5-7-139.hsd1.ca.comcast.net] has quit [Quit: realitygrill] 14:13:51 -!- zanes [~zane@108-90-245-81.lightspeed.cicril.sbcglobal.net] has quit [] 14:16:55 srid [~srid@unaffiliated/srid] has joined #scheme 14:17:28 pnkfelix [~Adium@c-71-225-165-188.hsd1.pa.comcast.net] has joined #scheme 14:19:52 homie [~levgue@xdsl-78-35-141-140.netcologne.de] has joined #scheme 14:27:18 -!- pnkfelix [~Adium@c-71-225-165-188.hsd1.pa.comcast.net] has quit [Quit: Leaving.] 14:32:28 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Remote host closed the connection] 14:32:53 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 14:35:37 -!- hkBst [~quassel@gentoo/developer/hkbst] has quit [Read error: Connection reset by peer] 14:43:29 -!- Brendan_T [~brendan@static.112.22.47.78.clients.your-server.de] has quit [Remote host closed the connection] 14:52:57 -!- phax [~phax@unaffiliated/phax] has quit [Ping timeout: 252 seconds] 14:58:11 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Ping timeout: 250 seconds] 15:11:37 -!- srid [~srid@unaffiliated/srid] has quit [Quit: Computer has gone to sleep.] 15:12:20 teurastaja [~teurastaj@modemcable072.213-81-70.mc.videotron.ca] has joined #scheme 15:12:45 i need to convert this to cps but im struggling: 15:13:53 (define (true? expr) (eqv? expr #t)) this is (define (true? k expr) (k (eqv? expr #t))) 15:13:57 but this: 15:14:34 (define (xor . args) (odd? (count true? args))) 15:15:38 ... is what im struggling with (not an exercise, just playing around and learning) 15:16:52 do you know what the dot there means? 15:17:06 i made it myself 15:17:08 so yes 15:17:20 then where is the problem? 15:17:33 zanes [~zane@mail.barackobama.com] has joined #scheme 15:19:13 it means take args to be a list then count true occurrences in args and 0 isnt odd? basically, im basing this on the fact that xor is true? whenever its args are odd? 15:19:29 i want to convert this to cps for learning purposes 15:20:10 (define (xor . args) (odd? (count (lambda (expr) (eqv? expr #t)) args))) 15:24:35 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 15:28:54 i guess the lambda comes first 15:29:18 -!- genieliu [~genieliu@59.78.62.120] has quit [Quit: leaving] 15:29:25 or count? 15:31:08 genieliu [~genieliu@59.78.62.120] has joined #scheme 15:31:39 -!- genieliu [~genieliu@59.78.62.120] has quit [Client Quit] 15:33:03 (define (xor k . args) ( ...)) 15:37:10 print non-exn exception backtraces in racket? 15:37:25 i can raise an arbitrary object, but how to get backtrace information from it? 15:38:28 phao [~phao@pontenova.dpi.ufv.br] has joined #scheme 15:42:37 i know how cps is supposed to work but id need my example transformed to understand better 15:42:56 i currently trying 15:43:02 wait 15:43:59 teurastaja, when you execute multiple things in a beginf-orm 15:44:08 you do it like this 15:44:24 whitequark: If you have any questions about Picobit, ask away. 15:44:57 whitequark: As for an ARM port, there currently isn't one, but it should be reasonably easy. 15:45:32 (first-thing ( (ignored-k) (second-thing actual-k)) 15:45:43 basically 15:46:03 you ignore all k's except for the last one 15:46:18 sorry! 15:46:20 not k 15:46:22 again 15:46:34 (first-thing ( (ignored-return-value) (second-thing actual-k))) 15:46:36 like this 15:46:55 (define (xor k . args) (count (lambda (v) (odd? v)) (lambda (expr) (eqv? expr #t)) args)) 15:46:59 now what? 15:47:11 (define (xor k . args) (count (lambda (v) (odd? v)) (lambda (expr) (eqv? expr #t)) args)) 15:47:12 oops 15:47:19 (define (xor . args) (odd? (count (lambda (expr) (eqv? expr #t)) args))) 15:47:22 you need to know how to expand if-operator? 15:47:57 just the answer to this simple thing will get me going. enough theory please 15:48:12 i checked theories for hours 15:48:34 give me exactly the thing that needs to be transformed 15:48:41 (define (xor . args) (odd? (count (lambda (expr) (eqv? expr #t)) args))) 15:48:45 this 15:48:45 ok 15:48:58 i have my cps-xformer in hand but i'm gonna do it by hand 15:50:10 (define (xor k . args) (odd? k (count (lambda (k expr) (eqv? k expr #t)) args))) 15:50:19 except that k's might get shadowed 15:50:23 but that's the general idea 15:50:29 teurastaja: Try to make it to a form where no procedure call is a subform of another procedure call. 15:51:19 you need to define 'count' as cps-xformed thing too 15:51:41 i know its not in tail form but how? 15:51:43 weirdo: I think that is not a correct transformation. 15:51:53 yeah i dont think also 15:52:06 odd? is in count 15:52:25 (define (xor . args) (let ([v (count (lambda (expr) (eqv? expr #t)) args)]) (odd? v))) 15:52:37 teurastaja: Try to work from this. 15:52:48 -!- pdelgallego [~pdelgalle@1385159933.dhcp.dbnet.dk] has quit [Quit: Leaving] 15:52:54 masm, why would you think so? 15:52:57 Now it is easier to see what is done first. 15:53:55 stamourv: I currently think I'll port it to ARM 15:54:13 armpit is a HUGE mess of hardcore assembly I would never understand 15:54:25 tinyscheme is somewhat like that, but in C 15:54:37 whitequark: It's written in portable C, so getting it to compile should be easy. 15:54:52 stamourv: ehh... it was initially targeted for 8-bit PIC18 15:54:58 hence the fixnum & bignum dimensions 15:55:10 that should be converted to use more efficient 32-bit arithmetics on ARM 15:55:21 The harder part will be to write the interface to the hardware, which involves adding instructions that correspond to the hardware operations you want to expose. 15:55:40 thanks im trying outside with that and a cigarette (easier) 15:56:03 stamourv: Yes, targeted for 8-bit PICs, but it compiles on workstations as well, we had it working for MSP430 at some point too. 15:56:21 stamourv, sure, but to interface with 32-bit hardware you will need 32-bit numericals 15:56:41 as far as I see, only 24-bit ones are present 15:57:01 weirdo: count does not have a continuation argument. 15:57:04 That's just the data representation, shouldn't be an issue. 15:57:13 maybe 15:57:31 And besides, bignums are used by default, and they're lists of 16-bit bigits. 15:57:39 I've only encountered Scheme yesterday and was shocked of how similar Ruby is to it 15:57:42 masm, thanks for taking time to explain that 15:57:56 it's best done by machine, i think 15:58:02 teurastaja, do you want my expander? 15:58:03 The actual arithmetic in the VM uses width-limited types when necessary, which should work on a 32-bit system just fine. 15:58:22 it's very short, and portable r5rs 15:58:54 stamourv: I was tired to write in C for uCs, but Ruby is just too fat for a low-end Cortex 15:59:05 stamourv: I thought of Forth, but Scheme is definitely a lot better 15:59:16 whitequark: That's precisely why Picobit was written :). 15:59:24 there is a scheme to forth compiler :) 15:59:29 stamourv: yep. Just what I've been searching for years 15:59:51 Why should embedded programmers be left out of the fun of using continuations, GC, bignums, etc. 16:00:39 C-Keen, are you from #lain? 16:00:40 I'd mention functional stuff in the first place (well, I come from a Ruby background, so I may misuse some terms), like map and friends 16:00:55 weirdo: used to hang out there once 16:00:56 that's what I've liked a lot in Ruby, and what C has no equivalents for 16:01:05 C-Keen, no matter where you go, everyone's connected 16:01:25 :) 16:02:42 stamourv: what's about GC performance? 16:02:55 whitequark: Good point. I use them so often that I don't even think about them :). 16:03:24 whitequark: Performance in general should be OK, but it wasn't a focus. As for the GC, it's a pretty simple mark and sweep. 16:03:45 With the heap sizes you'd be dealing with (you said 8kb), it shouldn't be a problem. 16:04:08 I've investigated internals of Ruby a lot... well, now, looking at Scheme internals, I see that in a lot of cases they're practically same 16:04:31 fixnums, bignums and symbols, and a _lot_ of library functions even have the same name 16:04:49 weird, I'm simultaneously writing in Lisp and not writing in Lisp. 16:04:56 Our reasoning about performance is that pretty much any small embedded processor will have insane amounts of processing power for the amount of memory/storage it has, so optimizing for memory footprint/code size is a better strategy. 16:05:07 whitequark: thing is, it's easier to make scheme fast than it is to make ruby fast. 16:05:41 wingo: And a _lot_ more work went into the former than the latter. 16:05:47 wingo: I can't remember when I've last encountered a real-world performance problem within Ruby 16:06:25 I think there's a lot of places where OOP fits very good (starting with Rails) 16:06:33 there are many programs you can't write in ruby because of its generally slow implementations. speed is expressiveness sometimes. 16:07:15 but agreed that things like rails are expressive in some other ways.... 16:07:35 well, I like both ruby and scheme now :) 16:07:44 cool :) happy hacking in both :) 16:07:46 wonder what will happen when I'll get into smalltalk 16:07:59 perhaps you can cross-pollinate them :) 16:08:02 as it dawned on me... Ruby is a Scheme with Smalltalk objects. 16:08:03 you'll get yourself a new image? 16:08:20 maybe 16:08:37 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 250 seconds] 16:09:12 at least I no longer want to put Ruby in embedded environment... there were some completely crazy ideas involving LLVM and language subsets 16:10:10 okay, I'm going home and reading SICP in the process :) 16:11:28 -!- teurastaja [~teurastaj@modemcable072.213-81-70.mc.videotron.ca] has quit [Remote host closed the connection] 16:13:08 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 16:14:22 whitequark: Ruby was explicity inspired by all three of Smalltalk, Scheme, and Perl. 16:15:16 -!- zanes [~zane@mail.barackobama.com] has quit [] 16:15:26 rimmjob [~king@adsl-108-195-221-70.dsl.hstntx.sbcglobal.net] has joined #scheme 16:15:48 is the reasoned schemer as good as the little schemer and the seasoned schemer? 16:17:44 xissburg [~xissburg@187.50.13.57] has joined #scheme 16:18:10 rudybot: are you alive? 16:18:10 xissburg: that's a dead-simple file; I recommend you look at yours 16:18:18 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Ping timeout: 246 seconds] 16:18:42 zanes [~zane@mail.barackobama.com] has joined #scheme 16:19:05 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 16:22:18 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 16:22:54 prototrout [836b0055@gateway/web/freenode/ip.131.107.0.85] has joined #scheme 16:24:19 weirdo: you can't get backtraces from arbitrary objects 16:24:32 the backtraces are obtained from a continuation mark set 16:24:46 every exception has one as a field 16:24:48 i see. i worked around it by defining "raise" to be racket's "error" 16:25:06 rimmjob: I haven't read it, but the subject matter is quite different. The reasoned schemer is about logic programming, IIRC. 16:25:07 you could throw some other value that included a continuation mark set 16:28:19 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Ping timeout: 250 seconds] 16:31:08 thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has joined #scheme 16:31:11 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Read error: Operation timed out] 16:31:27 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 16:31:50 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 16:31:50 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Excess Flood] 16:32:33 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 16:32:34 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Excess Flood] 16:33:16 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 16:33:23 kpal [eart0186@raven.linux.ox.ac.uk] has joined #scheme 16:33:44 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 16:36:30 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Ping timeout: 258 seconds] 16:36:31 -!- thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has quit [Quit: Leaving.] 16:42:29 HG` [~HG@p5DC05178.dip.t-dialin.net] has joined #scheme 16:42:33 rpg [~rpg@216.243.156.16.real-time.com] has joined #scheme 16:43:20 -!- phao [~phao@pontenova.dpi.ufv.br] has quit [Quit: Leaving] 16:43:43 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Ping timeout: 250 seconds] 16:46:45 srid [~srid@unaffiliated/srid] has joined #scheme 16:55:55 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Read error: Connection reset by peer] 16:56:46 -!- jrapdx [~jra@c-98-246-157-58.hsd1.or.comcast.net] has quit [Quit: Leaving] 17:11:28 is it possible that racket simply ignores the parameterized value of current-print? 17:12:11 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 17:13:13 it outputs mconses even though i did put write as current-print 17:13:14 so what's wrong? 17:14:19 jewel [~jewel@196-215-117-34.dynamic.isadsl.co.za] has joined #scheme 17:15:37 turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has joined #scheme 17:16:53 pandeiro [~pandeiro@187.38.242.184] has joined #scheme 17:20:32 zelak [~zelak@pdpc/supporter/student/zelak] has joined #scheme 17:22:20 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 17:26:54 oh 17:26:55 i got it now 17:27:01 i have a request for you, Racket docs 17:27:04 devs 17:27:30 could you please, please, please, make a parameter with the semantics of print-mconses-just-as-conses? 17:30:41 -> #racket, methinks 17:49:01 -!- leo2007 [~leo@58.22.114.186] has quit [Quit: rcirc on GNU Emacs 23.3.50.1] 17:53:36 -!- zelak [~zelak@pdpc/supporter/student/zelak] has quit [Remote host closed the connection] 17:54:48 realitygrill [~realitygr@c-24-5-7-139.hsd1.ca.comcast.net] has joined #scheme 17:56:21 zelak [~zelak@pdpc/supporter/student/zelak] has joined #scheme 18:09:18 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 18:13:18 is the symbol what I think it is, an immutable, store-efficient string? 18:14:39 leaky, too 18:15:20 so they don't get destroyed, like in Ruby 18:15:39 some implementations offer uninterned symbols 18:19:42 stamourv: should I use the repo.or.cz repository, or the github one? the last one seems more recent 18:19:45 -!- betta_y_omega [~betta_y_o@90.166.231.220] has quit [Ping timeout: 246 seconds] 18:20:12 oops, did not notice the nick 18:21:47 whitequark: The github repo is more up to date. 18:22:14 betta_y_omega [~betta_y_o@90.166.231.220] has joined #scheme 18:22:46 It has the new Racket-based compiler, has a lot of bugfixes, new optimizations and is easier to port to new hardware. 18:29:12 hm, somehow racket installer does not install the `raco' executable to /usr/local/bin even being explicitly asked to do so 18:29:39 peterbb [~peterbb@146.247.161.37] has joined #scheme 18:31:35 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 18:32:35 whitequark: How did you ask it? 18:32:45 Did you ask for a unix-style install? 18:35:36 stamourv: no, I've entered a prefix for links 18:36:06 at first, it said that there were no /usr/local/bin and some other directories, I created them, removed /usr/local/racket and relaunched the installer 18:36:52 (btw, I've already added the racket/bin to PATH and compiled picobit) 18:37:28 stamourv: may I ask a stupid question? why are e.g. comparsion operators defined as primitives through lambda's and not directly? 18:37:40 like, (define < #%<) 18:38:34 whitequark: Could you report your installation issues as a bug report? That would help us fix them. 18:39:10 stamourv: no problem 18:40:01 As for primitives, `#%<' cannot be used in a higher-order fashion, since it's just a VM instruction. If you want to be able to do stuff like `(map < l1 l2)', you would need `<' to be an actual Scheme function, hence the eta-expansion. 18:40:03 -!- zelak [~zelak@pdpc/supporter/student/zelak] has quit [Read error: Connection reset by peer] 18:40:22 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 18:40:23 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Excess Flood] 18:40:43 zelak [~zelak@pdpc/supporter/student/zelak] has joined #scheme 18:41:05 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 18:41:07 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Max SendQ exceeded] 18:41:49 Nisstyre [~nisstyre@infocalypse-net.info] has joined #scheme 18:43:23 -!- MrFahrenheit [~RageOfTho@users-146-176.vinet.ba] has quit [Ping timeout: 258 seconds] 18:46:28 stamourv: thanks, it's clear for me now 18:47:55 -!- masm [~masm@bl15-72-220.dsl.telepac.pt] has quit [Quit: Leaving.] 18:48:28 whitequark: For first-order uses, there's an inlining pass that should optimize this away anyway. 18:49:25 it's surprisingly easy to write a good lisp compiler 18:54:11 -!- Pepe_ [~ppjet@anderith.bouah.net] has quit [Ping timeout: 240 seconds] 18:54:54 stamourv: I'm going to make an ARM fork. To the date, I've seen two approaches of interfacing hardware from Scheme: the picobit one, which adds high-level primitives (#%led, #%adc), and the armpit one, which adds some commands to manipulate registers 18:55:13 the latter seems to be more flexible to me, and all the code is kept in ROM 18:59:53 thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has joined #scheme 19:00:02 whitequark: The armpit approach is more flexible, but given that Picobit was designed to be usable in a classroom setting, we went with the former approach. 19:00:51 That said, I'm not entirely satisfied with the way we're doing it now. It makes porting Picobit to new hardware somewhat labor-intensive. 19:01:55 stamourv: given the number of registers in even a very simple ARM chip, that goes up to impossible 19:02:25 I'd stick with defining #%reg-get and #%reg-set 19:02:47 maybe even in the bytecode itself 19:04:26 Right, but an interface that works for ARM may not work for PIC, or for arduino, etc. 19:05:16 But having #%reg-get and #%reg-set for ARM would make it easier to port Picobit from one ARM device to another, which would be a win. Even if you need something different for other architectures. 19:10:32 DrDuck [~duck@146.229.118.38] has joined #scheme 19:17:13 -!- DrDuck [~duck@146.229.118.38] has quit [Remote host closed the connection] 19:19:37 Pepe_ [~ppjet@anderith.bouah.net] has joined #scheme 19:24:15 DrDuck [~duck@146.229.118.38] has joined #scheme 19:28:09 -!- jewel [~jewel@196-215-117-34.dynamic.isadsl.co.za] has quit [Ping timeout: 250 seconds] 19:30:34 -!- thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has quit [Quit: Leaving.] 19:32:29 stamourv: yeah, and treeshaking optimizations will allow to just make a library for different kinds of ARM peripherals 19:33:19 e.g. have a library for all STM32 chips -- it will consist of a Cortex-M3 standardized drivers and some STM32 additions -- of which only the needed parts will be used 19:34:36 -!- copumpkin is now known as Samwell 19:40:30 whitequark: Yep, treeshakers _really_ shine in an embedded context. 19:41:25 Our IFL09 paper has some code size figures. Post treeshaking, we could get a program that made a LED blink to be 9 bytes of bytecode. 19:41:53 And a web server about 1k. 19:45:40 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 19:45:55 -!- DrDuck [~duck@146.229.118.38] has quit [Ping timeout: 252 seconds] 19:47:30 hussaibi [~hussaibi@wirewall.cs.toronto.edu] has joined #scheme 19:47:37 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 19:48:48 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 19:51:10 poindontcare [~user@122.176.200.20] has joined #scheme 19:55:50 -!- pchrist [~spirit@gentoo/developer/pchrist] has quit [Quit: leaving] 19:56:30 pchrist [~spirit@gentoo/developer/pchrist] has joined #scheme 20:07:14 thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has joined #scheme 20:12:03 oink 20:13:01 Hi 20:14:12 oidk 20:18:56 stamourv: oh, so you're the author 20:19:31 yes, an 1k webserver impressed me a lot 20:20:12 it wasn't quite obvious from the article, however, how much RAM does an 'empty' interpreter context require 20:20:27 I've seen something like 320 bytes, but is that all? 20:20:39 i.e. can I run 'hello world' with such an amount of RAM? 20:22:16 whitequark: ~320 bytes is the overhead of the VM, when compiled with the SIXPIC C compiler. It should be similar, or maybe a bit higher, with most C compilers. 20:22:26 Although that may be different in a 32-bit environment. 20:23:11 That figure includes VM registers, locations for intermediate values, things like that. But obviously not the Scheme heap. 20:23:37 stamourv: so, what will reside in Scheme heap at the start of no-op program? 20:23:47 is there any additional overhead?/ 20:24:04 -!- thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has quit [Quit: Leaving.] 20:25:35 the Scheme heap will be initialized as a linked list of free cells, to make allocation fast. 20:25:55 The heap is fixed size, and you can set it to be as small as you want/ 20:26:04 s@/@.@ 20:26:25 thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has joined #scheme 20:33:56 -!- xissburg [~xissburg@187.50.13.57] has quit [Remote host closed the connection] 20:34:25 -!- dgs [~dgs@203-97-51-73.dsl.clear.net.nz] has quit [Read error: Connection reset by peer] 20:35:00 -!- bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [Ping timeout: 260 seconds] 20:38:45 -!- thomanil [~Adium@ti0165a340-dhcp0156.bb.online.no] has left #scheme 20:39:46 stamourv: nice. okay, I should get my ARM toolchain... 20:41:25 whitequark: let us know how it goes. sounds like fun! 20:41:49 -!- peterbb [~peterbb@146.247.161.37] has left #scheme 20:42:13 whitequark: By the way, I'll probably be unresponsive on irc from tomorrow to the middle of next week. If you have any questions, email will be better. 20:42:39 -!- Samwell is now known as copumpkin 20:43:02 ASau [~user@95-24-221-224.broadband.corbina.ru] has joined #scheme 20:43:55 stamourv: thanks for the notice. I think I've already figured out most of specific Scheme stuff I'd like to know -- I have SICP for all the rest. It's mostly C VM hacking now 20:44:11 wingo: sure, I'll tell here 20:44:50 phax [~phax@adsl-68-73-148-217.dsl.ipltin.ameritech.net] has joined #scheme 20:44:50 -!- phax [~phax@adsl-68-73-148-217.dsl.ipltin.ameritech.net] has quit [Changing host] 20:44:50 phax [~phax@unaffiliated/phax] has joined #scheme 20:45:36 whitequark: I'm not planning to hack on Picobit in the short term, but I do have ideas for improvement in the longer term. 20:45:55 But these are mostly in the compiler, so that shouldn't affect your work. 20:46:51 I'll probably write an article on Picobit@STM32, but it will probably be in Russian 20:47:21 If you could translate it to english, that would be great! 20:47:34 as it is my native language, and, well, I don't even know where could I publish such an article in English-talking world 20:47:45 I can try 20:50:22 hmm... I'm curious how should one debug a Picobit program 20:50:54 especially when there is a target-dependent problem 20:51:54 -!- poindontcare [~user@122.176.200.20] has quit [Ping timeout: 240 seconds] 20:52:01 whitequark: Typically, you would run the program on a workstation first, and debug there. 20:52:16 But if the bug is hardware-related, then yes, debugging can be "fun". 20:52:33 But that's not really any different from any embedded development. 20:53:30 stamourv: it's different because of the VM. I have a nice gdb-server for my CPU (it even supports data watchpoints), and C debugging is easy as a pie 20:54:25 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 20:54:28 given the high-level nature of Lisp, I guess that trying to understand and debug code on VM instruction level is a pain 20:58:43 whitequark: It is a bit of a pain, but I've done it. 20:59:10 And the VM can be build with debugging support, but I'm not sure how well that will work on the target system itself. 20:59:23 s/debugging/tracing/ 20:59:40 (This is Scheme-level tracing, not C-level debugging.) 21:00:30 my ARM has some 20 MIPS of processing power (actually, up to 40 when overclocked...). I think I could afford some output through a serial port 21:00:52 it's the UART itself will be the bottleneck, not CPU 21:02:42 ah, yes, and what about interrupts? 21:03:17 I don't see any interrupt-related code in the VM 21:03:36 and I know that higher-level languages often have problems dealing with exceptional events 21:09:50 jcowan [~John@cpe-74-68-112-189.nyc.res.rr.com] has joined #scheme 21:10:20 actually, I have an idea of how to implement that: picobit already has very light coroutines 21:10:38 all the interrupt handlers can set a certain flag, and the VM will check it after current instruction 21:10:51 and if it is set, it will execute a spurious "call coroutine" instruction 21:11:05 stamourv: how do you think, will this work? 21:11:28 s/coroutines/continuations/ 21:12:17 I've got that idea while thinking about concurrent multitasking, but the principle is same in every case (that is, switching an execution context after an interrupt) 21:13:29 the bad thing here is that we'll lose interrupt priorities, and nested interrupts, and a bunch of other interesting possibilites 21:13:39 but maybe they should just be handled by C code 21:19:22 Re interrupts: We usually run Picobit with some kind of firmware underneath that takes care of such things. 21:19:54 Re coroutines: They're built with continuations, so it's all in Scheme, nothing in the VM. 21:20:07 And they're quite light, something like 8 bytes of overhead. 21:23:11 Well, that depends on your implementation of continuations, to be sure. 21:23:30 stamourv: yeah, I have your article printing and read it thrice... they're really light, and that is a great feature 21:23:46 -!- prototrout [836b0055@gateway/web/freenode/ip.131.107.0.85] has quit [Ping timeout: 252 seconds] 21:23:56 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has left #scheme 21:24:52 I mean, is it possible to make a VM primitive that would store the closure part of continuation somewhere, and just call it 'out of the band' if an interrupt arrives? 21:25:29 it looks perfectly possible for me, but well, I don't even know Scheme 21:25:31 Why wouldn't you just call a normal procedure, whitequark? 21:25:49 What do continuations have to do with it, until the interrupt handler returns and wants to restart the computation where it was interrupted? 21:27:43 Riastradh: yeah, that may be possible, but I (by some reason) was thinking of a less problematic way (i.e. a way that requires less changes to the VM) of doing it 21:28:14 jcowan: Right, and with Picobit's implementation of continuations, the overhead is 8 bytes. 21:28:14 and to call a normal procedure you'll need to allocate a new interpreter state, won't you? 21:28:27 stamourv: Ah. 21:28:37 Less problematic...? 21:29:09 Surely you don't want an interrupt handler to *discard* the state of the computation so it can't pick up where it left off, do you? 21:29:33 Riastradh: of course, the handler should be as seamless as it can be 21:29:33 That's what simply invoking a vanilla continuation as an interrupt handler would do. 21:30:11 Riastradh: maybe I'm misunderstanding continuations. I was thinking about it in other way around 21:30:26 like, the current ('normal') execution thread yields 21:30:32 not by itself, but because of the interrupt 21:30:39 and then interrupt handler begins to work 21:31:29 it's like cooperative multithreading where an interrupt handler is a thread which gets created when interrupt arrives 21:31:37 and then the current thread is forced to yield 21:32:07 (Usually that's called preemptive multithreading and is exactly the opposite of cooperative multithreading...) 21:32:23 Riastradh: yeah 21:32:53 but for the VM it will look like the cooperative multithreading with one small addition 21:33:14 I think of doing it this way because we already have cooperative multithreading 21:33:18 So, usually, what happens when an interrupt arrives in most systems is that you simply extend the current continuation with a special `return from interrupt' frame and then just call an interrupt handler procedure, which is an ordinary procedure. 21:33:49 DrDuck [~duck@146.229.116.153] has joined #scheme 21:35:02 The interrupt handler procedure might save its continuation (including the `return from interrupt' frame) in the heap and then remove it from the stack (be that `the area of memory called the stack', `the machine register called the stack pointer', or whatever) in order to replace it by another thread's continuation, for a preemptive multithreading system. But you don't need to do that if you don't want preemptive multithreading. 21:36:48 -!- new2net [~new2net@unaffiliated/new2net] has quit [Quit: new2net] 21:36:58 wisey [~Steven@host86-150-109-116.range86-150.btcentralplus.com] has joined #scheme 21:37:11 Riastradh: yes, I understand that -- that's how preemptive multitasking is done on low level, too (replacing `continuation' with `register set', or TSS, or whatever), and your way looks more sane for me 21:38:13 Riastradh: I wonder if it possible to implement preemptive multitasking system on top of a cooperative multitasking system by just setting everything up so that yielding threads will call each other, and then call yield not from the VM code itself, but on an external event 21:39:16 Only if they habitually poll for the external event. 21:39:29 -!- gravicappa [~gravicapp@ppp91-77-173-7.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 21:39:38 jcowan: VM just does that after each instruction 21:39:45 *jcowan* nods. 21:40:09 jcowan: in the interrupt handling scheme Riastradh described, VM still has to poll for external event 21:40:09 That's preemption: periodically forcing a call to yield. 21:40:50 as stack operations are not atomic, I don't see a way an interrupt handler can call the VM by its own 21:40:57 That depends on what you mean by "periodically". 21:46:11 soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has joined #scheme 21:46:12 I wonder what in the R5RS would get close to something I would call ``(lambda-parameter-noeval xs (define xs (vector-map xs eval)))'' this would be equivalent to just writing ``(lambda xs (..))'' but give me control over deciding which parameter is to be eval'ed when.. 21:47:12 Syntax definitions. 21:47:20 -!- hussaibi [~hussaibi@wirewall.cs.toronto.edu] has quit [Ping timeout: 260 seconds] 21:48:11 Fexprs, the historical name for what you are describing, have serious problems and are avoided in modern Lisps. 21:49:21 dostoyevsky: you might just want `delay' and `force' 21:50:21 True, but that requires cooperation between the caller and the callee, at least in most Schemes. 21:50:27 jcowan: I haven't yet fully understood let-syntax and the like... It looks really complicated to me in the spec... whereas my special lambda is just a special flag that instructs eval not to eval the parameters to a call.. very easy to implement 21:50:28 (Chibi has a compile option to auto-force.) 21:50:48 dostoyevsky: Very easy to implement, yes. Very hard to understand programs employing it, however. 21:51:01 For example, what happens when you pass such a procedure to "apply"? 21:51:44 Note that eval evaluates S-expressions in the empty lexical context, *not* in the lexical context of the caller or the callee. 21:54:31 So (define (x y z) ((lambda-parameter-noeval ...)) will end up with x and y bound to their *global* values, almost certainly not what you want. 21:58:08 dRbiG [p@bofh.edu.pl] has joined #scheme 22:05:49 phd1969 [~pduch@CPE0023bee11ddb-CM0023bee11dd8.cpe.net.cable.rogers.com] has joined #scheme 22:06:45 -!- sstrickl [~sstrickl@dublin.ccs.neu.edu] has quit [Quit: sstrickl] 22:07:09 I'm doing the MIT OpenCourse 6.001 in Scheme and having issues with writing a recursive procedure to calculate log values of 2 22:07:14 Here is the question 22:07:15 http://pastie.org/2388128 22:07:59 My issue is I'm not sure how to write it without not dividing by zero 22:08:24 If you don't want to divide by zero (and you don't), check to see if your divisor is zero, and then don't do that. 22:08:41 Or, "If you do not like crottled greeps, why did you order them?" 22:12:08 -!- wingo [~wingo@90.164.198.39] has quit [Ping timeout: 246 seconds] 22:27:30 -!- samth is now known as samth_away 22:30:01 jcowan: "Crottled greeps", huh? My dictionary does not know either of two words 22:30:23 http://fancyclopedia.editme.com/CROTTLED 22:31:16 It's one of those in-jokes that doesn't actually have anything behind it, like "No soap, radio!" 22:31:29 The in-group are those who know that it means nothing. 22:34:37 I should try to remember that and confuse someone, too :-) 22:52:47 -!- phd1969 [~pduch@CPE0023bee11ddb-CM0023bee11dd8.cpe.net.cable.rogers.com] has quit [Quit: phd1969] 22:59:33 -!- soveran [~soveran@rrcs-24-43-163-86.west.biz.rr.com] has quit [Remote host closed the connection] 23:04:52 masm [~masm@bl15-72-220.dsl.telepac.pt] has joined #scheme 23:06:15 stamourv: I've compiled picobit for ARM Cortex-M3 (thumb-2) 23:06:22 I think it's the full version 23:06:33 it has 8K of code and 44 bytes of BSS 23:08:55 yeah, I've checked, that includes bignums and stuff 23:10:26 pretty impressive, I'd say, compared to the nearly 16K for PIC18 mentioned in the article 23:11:42 as for the bss, I think it's so small because of compiler using the stack aggressively -- a quick look at the disasm listing confirms that 23:12:38 MrFahrenheit [~RageOfTho@users-150-65.vinet.ba] has joined #scheme 23:18:49 -!- ivartj [~ivartj@ti0031a380-0522.bb.online.no] has quit [Read error: Connection reset by peer] 23:19:07 ivartj [~ivartj@ti0031a380-0522.bb.online.no] has joined #scheme 23:26:51 pjb [~t@81.202.16.46.dyn.user.ono.com] has joined #scheme 23:27:17 -!- pjb is now known as Guest93583 23:27:59 -!- Guest93583 is now known as pjb 23:36:27 -!- ineiros [~itniemin@james.ics.hut.fi] has quit [Ping timeout: 250 seconds] 23:37:07 -!- phax [~phax@unaffiliated/phax] has quit [Quit: Leaving] 23:37:07 -!- pygospa [~TheRealPy@kiel-d9bfdc1b.pool.mediaWays.net] has quit [Quit: "Reboot"] 23:37:23 -!- masm [~masm@bl15-72-220.dsl.telepac.pt] has quit [Quit: Leaving.] 23:41:43 pygospa [~TheRealPy@kiel-d9bfdc1b.pool.mediaWays.net] has joined #scheme 23:43:01 -!- DrDuck [~duck@146.229.116.153] has quit [Ping timeout: 260 seconds] 23:43:28 ineiros [~itniemin@james.ics.hut.fi] has joined #scheme 23:46:33 That's kind of cute: Clojure's answer to #; is a (comment & body) macro that returns nil. 23:50:10 Well, obviously there are contexts where that won't work. 23:50:10 -!- DGASAU [~user@91.218.144.129] has quit [Remote host closed the connection] 23:53:24 DGASAU [~user@91.218.144.129] has joined #scheme 23:54:04 klutometis: careful, if you mention non scheme here, you get kicked out. 23:54:57 Actually, that won't work for 90% of the contexts I've seen #; used in. 23:55:55 `cond-expand', on the other hand, works most of the time as a replacement for #+ #-