00:00:30 I was using it in the sense of the antonym of "rule" (in the appropriate sense). 00:00:38 But with a hit to the literal sense, yes. 00:15:05 Thren [n=Thren@c-75-67-111-180.hsd1.nh.comcast.net] has joined #scheme 00:15:07 -!- Thren [n=Thren@c-75-67-111-180.hsd1.nh.comcast.net] has quit [Client Quit] 00:20:41 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 00:26:00 A good fountain pen on good paper is a joy to write with. 00:26:20 What is good paper? 00:27:02 Paper that doesn't suck. 00:29:59 -!- cracki [n=cracki@134.130.183.101] has quit [Read error: 131 (Connection reset by peer)] 00:32:09 -!- saccade_ [n=saccade@dhcp-18-188-74-28.dyn.mit.edu] has quit ["This computer has gone to sleep"] 00:32:32 If it doesn't suck, you can't exactly write on it -- not with ink, anyway. 00:33:02 *jcowan* knows perfectly well that if he wrote anything longer than a grocery list by hand, the said hand would fall off halfway down the first page, anyhow. 00:33:24 Yes, you can, jcowan. 00:34:35 But it is true that most paperoid materials will suck a little bit. Some papers suck much more than others, though. 00:35:04 cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has joined #scheme 00:39:25 -!- anon [n=anon@ip56583baa.direct-adsl.nl] has left #scheme 00:43:22 dansa [i=dbastos@dhcp-077-250-091-080.chello.nl] has joined #scheme 00:44:47 i'm defeated by mzscheme; im trying to have it load file.ss and give me the repl so that i can test my functions, but so far i failed to do so; have tried -f, -N, -u, and so far i didnt get it; my code contains a couple of functions inside a (module ...) 00:45:22 could someone suggest a command line to achieve what i seem to want? 00:45:41 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 00:48:24 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 00:48:48 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 00:52:02 well, finally: %mzscheme -i -u html.ss 00:52:28 -!- masm [n=masm@bl7-194-253.dsl.telepac.pt] has quit ["Leaving."] 00:52:34 -!- dysinger [n=dysinger@32.152.8.241] has quit [Remote closed the connection] 00:52:59 thanks for the ... real time chat? :-) 00:53:34 -!- dansa [i=dbastos@dhcp-077-250-091-080.chello.nl] has left #scheme 00:53:36 karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 00:54:16 -!- mrsolo [n=mrsolo@nat/yahoo/x-ziafrkoyfwjugyuw] has quit [Remote closed the connection] 00:55:23 Looks like another language standardization flame war rose from the grave. 00:57:49 *karlw* yawns. 01:00:15 rntz [n=rntz@pool-96-235-185-65.cmdnnj.fios.verizon.net] has joined #scheme 01:03:00 danking: Looks like your preference file was currupted somehow. Did you try to tweak it somehow? 01:03:41 I have a complex plt-scheme question/problem involving how to create a rather strangely-specified weak mapping. 01:03:47 http://sprunge.us/YHZS <- describes the question. 01:03:51 would anyone care to help me? 01:03:58 Riastradh: parameters are associated with continuation marks (aka "the stack"), but there's an extra level of indirection with the fact that they hold thread cells. 01:04:27 synx: Yes, `parameterize' is tail recursive, since it associates information with the current stack. 01:04:43 eli, a parametrization is a map from parameters to thread cells, right? 01:05:23 Yes, where "map" is from the current stack (roughly) to the cells. 01:05:34 Also, what did you mean by "approximately tail-recursive"? 01:05:55 Ugh, yes I know what you mean; strike that. 01:05:57 (let loop () (parametrize (((make-parameter ...) 5)) (loop))) will use an unbounded amount of memory, won't it? 01:06:18 OK, strike the strike. 01:07:10 eli: Thanks! Also, if it used dynamic-wind instead of continuation marks, I guess it would not be tail recursive? 01:08:16 -!- karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has quit [Read error: 104 (Connection reset by peer)] 01:08:22 Riastradh: I wasn't sure so I tried -- that is bounded, but that unrelated to parameterize being bounded, only to having the mechanisms in place to collect unused marks, thread cells, etc. 01:08:42 OK. 01:08:49 Or more specifically, it is unrelated to the kind of boundedness that synx was referring to. 01:09:10 synx: Yes, dynamic wind kills tails. 01:09:22 s/dynamic wind/`dynamic-wind'/ 01:09:40 If you have a loop between a set of mutually recursive procedures, each of which binds a different parameter and binds a different continuation mark, will such a loop use a bounded amount of space? 01:10:42 I'll remember that eli. Maybe I too could use continuation marks some places where dynamic-wind is overkill. 01:12:15 Riastradh: I'm pretty sure, but way too tired to try it out. If you give me code I'll run it. 01:12:36 OK. Not right now, but if you're curious later, remind me. 01:13:06 synx: You should generally think about continuation marks as a low level device that should be used only when you do very low level stuffs. 01:13:13 Incidentally, since there was obviously some uncertainty about the term, what did you think I meant when I said `approximately tail-recursive', before striking your strike? 01:15:39 OK eli 01:16:02 (I said `approximately' because I didn't trust it to work as generally as the guarantee of proper tail recursion in tail calls -- I suspect that I can construct an example that should, if it were properly tail recursive, use a bounded amount of memory, but that actually uses an unbounded amount of memory.) 01:16:17 Riastradh: Is something like (define (loop1 n) (unless (zero? n) (parameterize ([(make-parameter (cons 1 1)) (cons 2 2)]) (loop2 (sub1 n))))) what you're wondering about (with the mirrored version for `loop2')? 01:17:05 Riastradh: I thought that you were referring to that observable difference that you brought up a short while ago. 01:17:20 No, I mean something like EVEN? and ODD? where EVEN? binds EVEN-PARAMETER to (NOT (EVEN-PARAMETER)) and ODD? binds ODD-PARAMETER to (NOT (ODD-PARAMETER)) or something, except that's not quite enough -- it also needs some intervening continuation marks, I think, to make it actually accumulate space. 01:17:59 But I don't remember how continuation marks work well enough to construct this example I am hypothesizing about at the moment. 01:18:24 The usual even/odd are not tail recursive; making them so would be equivalent to the above wrt tail-recursiveness. 01:19:28 Huh? 01:19:55 (define (even? x) (or (zero? x) (odd? (- x 1)))) (define (odd? x) (and (not (zero? x)) (even? (- x 1)))) 01:20:09 I'm having colorful illusions, apparently. 01:21:02 pink elephants are on parade 01:21:27 Ah, so *that's* what it was? 01:22:56 Riastradh: In any case, by associating information with the stack frame, `parameterize' should always be tail recursive. If you find a way to break it, then that would mean a bug. 01:27:14 Riastradh: https://synx.us.to/code/scheme/parameter-loops.ss 01:28:11 That has parameters parameterizing with each iteration... uses a bounded amount of memory though. 01:28:27 mutually recursive procedures binding different parameters I mean. 01:43:39 I suppose darius's gimmick for dynamic binding with tail recursion might apply here, though I don't claim to understand the full implications. 01:45:33 saccade_ [n=saccade@65.78.24.131] has joined #scheme 01:48:15 His gimmick, I believe, is tantamount to how PLT implements PARAMETRIZE. 02:08:28 Not unlikely. 02:08:43 BTW, sorry about leaving you hanging the other day -- I was dragged away by medical considerations. 02:09:11 Unfortunately, I have no idea which Schemes do or do not gc symbols. Anybody know specific answers? 02:09:51 bytecolor [n=user@32.155.217.56] has joined #scheme 02:10:49 (define foo "foo") #'foo ==> "foo" 02:11:18 what is #' doing? I cant find it in the guile or r5rs manuals 02:12:23 jcowan, Scheme48 does; MIT Scheme and T do not. 02:12:32 Thanks, that's helpful 02:12:44 Those are the only ones for which I know the answer. 02:15:10 *jcowan* types (let loop () (string->symbol (number->string i)) (set! i (+ 1 i)) (loop)) into csi to see what happens 02:15:46 anyone going to the workshop tomorrow? 02:15:52 Presumably scsh does too, then. 02:16:53 It's irritatingly hard to provoke out of memory events by mere linear growth these days, however. 02:16:59 Modern computers have way too much memory. 02:18:11 Can't you set a maximum heap size, jcowan? 02:19:23 Probably. 02:20:25 Scsh does garbage-collect symbols, yes. 02:29:10 -!- Deformati [n=joe@c-76-112-68-135.hsd1.mi.comcast.net] has quit [Read error: 104 (Connection reset by peer)] 02:29:59 -!- hosh [n=hosh@c-71-199-176-82.hsd1.ga.comcast.net] has quit [Read error: 113 (No route to host)] 02:34:00 skmidry_ [n=deekay@59.92.197.232] has joined #scheme 02:34:56 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [] 02:38:17 TimMc: no, sorry -- no way to grab rudybot's "last" value 02:38:32 -!- rudybot_ is now known as rudybot 02:53:00 tjafk2 [n=timj@e176193053.adsl.alicedsl.de] has joined #scheme 02:58:15 odd question, because I don't actually want to do it any more...is there a way to say "all of the params that were passed to this function, regardless of what bindings they were given" ? 02:58:29 -!- bytecolor [n=user@32.155.217.56] has quit [Read error: 110 (Connection timed out)] 02:58:41 You can't specify both individual params and a list of all params 02:58:53 you can specify individual params and a list of all *remaining* params if any 02:59:11 If you want JavaScript, you know where it is. 02:59:26 nope. honestly, I'd be surprised if this exists. 02:59:44 It doesn't. 02:59:48 I started off thinking about how I would write a macro intended to expand inside a function and do processing that involved the args to the func. 03:00:30 (that is, the macro is intended to be used inside a variety of funcs, with arbitrarily-named args) 03:01:17 -!- skmidry [n=deekay@59.92.159.235] has quit [Connection timed out] 03:01:37 specifically, an "accessible-to" macro for the web framework I'm working with that would say "if the current user doesn't meet these criteria, redirect to here and pass the request and session object (if any) along" 03:01:59 then I realized that, in this case, there's a better way. But I was wondering if the general technique is possible. 03:02:41 something like this (as a func, not a macro) is easy in Perl, since the args always come in through @_. 03:04:13 Well, another approach is: 03:04:43 (define (foo . args) (define (foo * a b c) ...) (foo* (car args) (cadr args) (caddr args))) 03:05:00 within the ... body, all of a, b, c, and args are bound. 03:06:32 "foo *" and "foo*" ... is the space simply a typo? 03:06:56 or a mult operator, just for example? 03:07:23 typo 03:07:36 foo* it should be 03:07:36 ok, then I get it. 03:07:41 neat trick. 03:07:56 and fairly easy to macroify. 03:08:11 so you don't have to type the same pattern over and over. 03:08:27 *jcowan* nods. 03:08:57 However, if you are using a syntax-rules macro, you'll have to pass the name of the args argument, because syntax-rules can't introduce names visible in the input. 03:09:07 is foo* private to foo? 03:09:09 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit ["crap..."] 03:09:25 -!- tjafk1 [n=timj@e176215046.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 03:09:30 I haven't been using nested defines, so I'm not clear on their scoping. 03:10:06 -!- skmidry_ [n=deekay@59.92.197.232] has quit [Operation timed out] 03:12:05 They are lexically scoped, like LET, but the bindings are visible on the right-hand sides of the definitions, like LETREC. 03:12:43 I thought let* was visible to the right and letrec was visible left and right? 03:12:45 Well, the scope of a LET binding is its body, whereas the scope of an internal define is the body of the block it's in. 03:16:16 rudybot: (eval (define (x) (letrec ((one (lambda () 1)) (sum_up (lambda () + (one) (two))) (two (lambda () 2))) (sum_up))) 03:16:16 dstorrs: eh? Try "rudybot: help". 03:16:19 ) 03:17:57 rudybot: eval (letrec ((one (lambda () 1)) (sum_up (lambda () + (one) (two))) (two (lambda () 2))) (sum_up)) 03:17:58 dstorrs: ; Value: 2 03:22:58 zeroish` [n=zeroish@c-76-98-192-104.hsd1.nj.comcast.net] has joined #scheme 03:23:34 -!- jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has quit ["Leaving"] 03:23:46 karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 03:24:41 -!- karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has quit [Remote closed the connection] 03:26:54 -!- Mr_Awesome [n=eric@c-98-212-143-245.hsd1.il.comcast.net] has quit [Read error: 110 (Connection timed out)] 03:29:26 -!- kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has quit ["Leaving"] 03:29:36 skmidry_ [n=deekay@59.92.197.232] has joined #scheme 03:36:37 -!- saccade_ [n=saccade@65.78.24.131] has quit ["This computer has gone to sleep"] 03:40:34 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 03:41:09 kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has joined #scheme 03:43:16 eli: I didn't notice tweaking it, but I eventually realized that also and deleting it fixed the problem. I only had a few settings saved anyway. Thanks for the response. 03:44:17 -!- luz [n=davids@189.122.90.116] has quit ["Client exiting"] 03:45:06 -!- kniu [n=kniu@pool-71-106-16-199.lsanca.dsl-w.verizon.net] has quit [Remote closed the connection] 03:50:02 danking: Did you look at it before you deleted it? 03:52:00 eli: I still have a copy of it 03:52:04 I did not look at it though 03:54:20 can you tell me what the first 2 lines say? 03:54:56 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 03:58:20 jengle [n=jengle@64-252-49-153.adsl.snet.net] has joined #scheme 04:00:00 nukem [n=nukem@static-98-140-86-94.dsl.cavtel.net] has joined #scheme 04:00:28 -!- skmidry_ [n=deekay@59.92.197.232] has quit [Success] 04:01:38 how do i import another .scm file 04:01:48 basically how do i do a header file in scheme? 04:14:45 you don't do that 04:14:52 but you probably want either (load) or (require) 04:15:41 Elly: ok ill look into that 04:15:42 thanks 04:17:19 No, you do not want LOAD, ever. 04:17:23 nukem, what Scheme implementation are you using? 04:17:33 mit-scheme 04:17:34 The answer to your question depends on that. 04:17:36 I sometimes want load, Riastradh :P 04:18:28 Riastradh: so u suggest using require? 04:18:30 OK, I lied: in MIT Scheme, you must use LOAD. However, you never use it in one file to indicate that that file requires the definitions of another file. 04:18:59 You will generally write one file to load every other file you want to load, using the LOAD procedure, in the desired order. 04:19:22 well right now i only have 2 files 04:19:53 So create a third called load.scm that just contains 04:19:55 (load "foo") 04:19:56 (load "bar") 04:20:01 where foo.scm and bar.scm are your other files. 04:20:12 ok 04:20:17 thanks 04:20:22 Riastradh: wait, is that really what you do with mit-scheme? 04:20:28 -!- Nshag [i=user@Mix-Orleans-106-1-39.w193-248.abo.wanadoo.fr] has quit [Read error: 104 (Connection reset by peer)] 04:22:26 Yes, I am sorry to say. 04:23:00 :( 04:29:54 -!- zeroish` [n=zeroish@c-76-98-192-104.hsd1.nj.comcast.net] has quit [Connection timed out] 04:30:52 *Elly* <3 PLT still 04:39:45 -!- jengle [n=jengle@64-252-49-153.adsl.snet.net] has quit ["Leaving"] 04:44:04 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 04:49:38 im trying to create a new var tmp inside an if statement 04:49:46 by doing (define tmp '()) 04:49:59 but I keep getting an error ";Can't bind name in null syntactic environment: tmp #[item 11]" 04:50:01 why is that? 04:51:50 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 04:53:57 you can't use define somewhere other than the top level like that 04:54:08 define is used entirely for making new top-level bindings 04:54:12 maybe you want let? 04:54:23 i also tried (let tmp '()) 04:54:28 but that didnt work either 04:54:30 that is not the syntax for let 04:54:34 check the documentation 04:54:50 in general, it's (let ((n1 v1) (n2 v2) ...) body) 04:54:56 i meant (let (tmp '()) 04:55:04 that is also not correct syntax 04:55:22 its (let ((tmp '()))) 04:55:27 I know 04:55:31 that is what I just said :P 04:55:41 ok i was just making sure 04:56:41 it doesnt like that either 04:57:05 can you pastebin your code somewhere? 04:58:04 http://pastebin.com/m20e8a313 05:02:00 do u see anything wrong? 05:03:17 are you using an editor that can match parentheses? 05:03:22 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 05:03:30 because you have written: (let ((tmp '()))) 05:03:31 kinda OT ... anyone figured out a good way to read an online pdf & code at the same time? 05:03:38 (i.e. the book is in pdf format, so you're half reading it, half writing code) 05:03:41 the actual form of let includes a non-empty bod 05:03:43 body, even 05:03:44 Elly: ya im using vim 05:03:47 i'm still trying to figure out the ideal layout to make this work 05:04:00 lowlycoder: open the PDF on half the screen and your editor on the other half 05:04:21 are you sure that works? :-P 05:04:35 it works for me 05:05:00 nukem: so, (let ((n v)) b) binds n to v *inside b* 05:05:05 is b is empty, the binding is useless 05:05:25 for example: (let ((a 1)) (+ a 2)) 05:06:47 I also tried (let (tmp (lookup name (car environment)))) and that doesnt work 05:06:56 lookup should be returning something valid 05:07:02 um 05:07:07 read what I said about the body of let again 05:07:38 ok i see 05:11:23 i still get the same error doing (let (tmp (lookup name (car environment))) (if ...)) 05:11:47 im only using tmp in the let body 05:12:26 you do not have enough sets of parentheses in the example you gave there 05:12:56 in the code i know i do 05:13:11 pastebin it again 05:13:36 http://pastebin.com/d22158a44 05:14:05 no, you do not have enough parens 05:14:20 remember, it's (let ((n1 v1) (n2 v2) ...) body) 05:14:47 Elly: "define is used entirely for making new top-level bindings"? 05:15:03 eli: that's...I don't see how I can explain that 05:15:10 it's just true, isn't it? 05:15:19 What about internal definitions? 05:15:33 internal to modules and classes, you mean? 05:15:45 No, internal to a function. 05:15:54 you...can't do that, can you? 05:16:04 rudybot: eval (define (foo x) (define bar (+ x 1)) bar) 05:16:05 eli: your lazy sandbox is ready 05:16:09 rudybot: init scheme 05:16:09 eli: your scheme sandbox is ready 05:16:10 rudybot: eval (define (foo x) (define bar (+ x 1)) bar) 05:16:13 rudybot: eval (foo 5) 05:16:14 eli: ; Value: 6 05:16:47 I thought that was not legal 05:17:02 They're equivalent to `letrec'. (Usually. Sometime to `letrec*'.) 05:17:20 SICP is very fond of them, IIRC. 05:17:51 Elly: that fixed it thanks for all the help 05:17:55 reprore [n=reprore@114.48.25.189] has joined #scheme 05:18:41 eli: hm 05:19:07 eli: I just checked out r5rs, and it says "[Definitions] are valid only at the top level of a and at the beginning of a ." 05:19:18 so... there it is :P 05:20:15 Elly: Look for a section called "Internal definitions". 05:20:37 'beginning of a ' covers the case you mentioned 05:21:07 Yes. 05:21:12 -!- jao [n=jao@31.Red-83-33-230.dynamicIP.rima-tde.net] has quit [Connection timed out] 05:21:27 "beginning of a " != "top-level bindings". 05:21:33 I know 05:21:43 that is why I said "so... there it is :P" 05:21:49 Ah. 05:22:09 every time I look at r5rs I am astounded by how elegant it is 05:22:37 It has its moments; both kinds. 05:23:45 clojure is awesome 05:23:50 is clojure considered scheme? 05:23:54 No. 05:23:55 no 05:23:59 or will i get kick banned for saying things like "clojure is scheme done right" 05:24:08 why is clojure ot considered scheme? 05:24:09 you would have to justify a claim like that 05:24:12 (besides lacking continuations) 05:24:12 Clojure is not Scheme, and it is not done right. 05:24:14 because it's... not scheme? 05:24:23 there is a definition of scheme, called R5RS 05:24:27 clojure does not meet it 05:24:43 r5rs is one definition of scheme 05:24:48 r5rs is *the* definition 05:24:56 what about r4rs and r6rs? 05:25:15 respectively older and newer versions of the definition of scheme 05:25:25 r6rs is more relevant, but all of that is unrelated to clojure which does not satisfy any version. 05:25:31 if you want to consider r6rs to be the definition, go ahead 05:29:14 Scheme has several key features: lexical scope, hygiene, uniform syntax, tail calls, first class continuations. 05:29:26 clojure lacks tail calls & first class continuations 05:29:32 in fact, any time of continuations 05:29:33 then it is not scheme 05:29:35 saccade_ [n=saccade@65.78.24.131] has joined #scheme 05:29:36 Some random googling makes me believe that clojure fails each and every one of these. 05:29:40 mystery solved :P 05:29:45 eli: lexical scope? really? 05:29:59 It has CL-style dynamically scoped variables, it seems. 05:30:03 clojure satisfies lexical scope; it uses define-macro, so i guess failing hygeiene 05:30:05 really? D: 05:30:18 it supports dynamicallys scoped, but default is lexical 05:30:19 wait 05:30:25 i actually use clojure :-D 05:30:25 ew :( 05:30:33 define-macro is awesome; i never got syntax-case 05:30:41 what does itmean to have support for dynamic scope? 05:30:54 it breaks the whole notion of 'macro is just scheme code' 05:30:57 you say "This probably comes from a previous frame"? 05:30:59 er, what? 05:31:01 no it doesn't 05:31:10 where did I say that? 05:31:12 syntax-case is a pattern match applied to a syntax object 05:31:17 -!- araujo [n=araujo@gentoo/developer/araujo] has quit ["Leaving"] 05:31:22 no, I am asking what it looks like to have support for dynamic scope 05:31:33 From http://clojure.org/vars -- Vars provide a mechanism to refer to a mutable storage location that can be dynamically rebound (to a new storage location) on a per-thread basis. 05:31:53 Most Schemes support dynamic scope, Elly. The R5RS includes two dynamically scoped resources -- the current input and output port -- although no general way to create new ones. 05:32:10 that... just sounds like thread-local mutable variables, eli 05:32:19 Riastradh: huh? aren't those just globals? oO 05:32:20 lowlycoder: `syntax-case' is *exactly* "macro is just scheme code". 05:32:48 Elly: Yes, it sounds just like CL -- global variables are dynamically scoped by default, function arguments are lexically scoped. 05:33:01 IOW: a mess. 05:33:40 that's...weird 05:33:41 eli: none of the stuff I've read on syntax-case says that 05:33:59 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [] 05:34:09 -!- arthurmaciel [n=user@201.80.20.127] has quit [Remote closed the connection] 05:34:14 lowlycoder: syntax-case is something like (match (syntax->datum foo) ...) 05:34:18 Elly, they are not merely mutable global resources because there is no operation simply to mutate them. 05:34:18 I'm actually surprised to find out just how many of these fundamental features clojure breaks. It seems that I gave it an undeserved benefit-of-doubt. 05:34:22 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 05:34:40 Riastradh: really? that' 05:34:45 that is surprising 05:34:46 lowlycoder: What Elly said -- syntax case is just doing pattern matching, and otherwise it *is* Scheme code. 05:35:08 *eli* looks up clojure namespaces 05:35:40 The only operations on the current input and output ports are to find what they are and to dynamically bind them (to be newly created ports into or out of named files). 05:35:51 Riastradh: that's...messed up 05:35:54 *eli* looks up clojure modules 05:35:59 What is messed up, Elly? 05:36:08 why did they do that instead of *current-input-port* and *current-output-port* as globals? 05:36:59 Yeah, clojure does the CL thing in this area too it seems -- namespaces, and "identifiers" are actually just symbols. 05:37:18 why am i getting "The object #!unspecific is not applicable." now? 05:37:21 http://pastebin.com/m73f0f6ae 05:37:30 So clojure primitively fails another huge Scheme feature from r6rs (that has existed in other implementations before that). 05:37:31 Requiring that the representation of these resources be globals has several pragmatic consequences, Elly. 05:37:36 Riastradh: like what? 05:38:00 Suppose a Scheme system wants the current input and output ports to be stored thread-locally. 05:38:30 In order for this to happen, global variables must be stored thread-locally, or there must be something special about *CURRENT-INPUT-PORT* and *CURRENT-OUTPUT-PORT* that is not shared by other global variables. 05:38:40 saccade__ [n=saccade@VPN-EIGHTY-TWO.MIT.EDU] has joined #scheme 05:38:42 hm 05:38:44 that's true 05:38:50 so you declare them to be thread-local? 05:38:55 Conversely, if global variables are stored thread-globally, then the current input and output port cannot be thread-local. 05:39:06 Elly: Do you know _why_ the convention is to use stars for globals in CL? 05:39:24 If you want some notion of variables that are `declared' to be stored thread-globally, you need to have some notion of declarations about variables. 05:39:26 eli: no 05:39:40 -!- reprore [n=reprore@114.48.25.189] has quit [Remote closed the connection] 05:40:30 Elly: Because these things are dangerous. If you happen to do something like (defvar x 'whatever) in CL, you pretty much guarantee lots of foot shootage. 05:40:49 (Of the worst kind.) 05:40:53 fair enough 05:41:13 but having two built-in dynamically-scoped variables and no way to make them in general seems inelegant 05:41:14 eli, to be fair, that's not because of declarations about *bindings*, but rather because of declarations about *symbols* that cause LET and LAMBDA not to shadow as they should. 05:41:18 i dont get why im getting this error argh 05:41:41 Riastradh: Yes, of course. 05:41:47 nukem: the code that you have does not look too bad? 05:41:55 nukem: you can get rid of the let, since it's not doing anything 05:42:11 Elly: are you looking at http://pastebin.com/m73f0f6ae 05:42:19 I think so, yes 05:42:36 Combined with the implicit special declaration of random `setq' on new symbols, and you get a recipe for disaster of the kind that leaves scars that make sure you never ever forget the damn stars. 05:42:36 the let is setting tmp to whatever lookup returns 05:42:50 I mean the outer let 05:43:06 eli, SETQ on unbound symbols has undefined effects, by the way. 05:43:09 ok 05:43:16 you should also note 05:43:18 currently its dying in the second let 05:43:25 (Some implementations do imply a special declaration, though.) 05:43:25 that (if (null? env) ()) 05:43:30 is not a good idea 05:43:46 Riastradh: I forgot to add -- should have been "the implicit special declaration ... that many implementations are fond of". 05:43:47 Elly: o why is that? I am it to return null if it is 05:43:53 OK. 05:43:54 () is not null in scheme 05:43:56 perhaps you mean '() 05:44:09 Elly: ahh yes 05:44:09 (or, in fact, null) 05:44:31 () causes an interesting error message 05:45:16 xwl [n=user@222.35.122.240] has joined #scheme 05:45:17 Elly: ok things are starting to work again 05:45:19 thanks 05:45:27 I wish scheme gave better errors 05:45:29 () is the external representation of the empty list in Scheme. (QUOTE ()) is the external representation of an expression whose value is the empty list. In some Scheme implementations, of which MIT Scheme is one, the empty list is self-evaluating. 05:45:42 the errors describe exactly what went wrong 05:46:53 -!- saccade_ [n=saccade@65.78.24.131] has quit [Read error: 145 (Connection timed out)] 05:46:53 Actually, I'm lying by using the term `the external representation', because '() is another external representation for the same object as (QUOTE ()), under some definition of `the same'. 05:48:18 nukem, if you attempt to evaluate (#!UNSPECIFIC), you will get the error you quoted, because #!UNSPECIFIC is not a procedure and hence not applicable. If (FOO) returns #!UNSPECIFIC, and you attempt to evaluate ((FOO)), that will reduce to (#!UNSPECIFIC), and you will get the error you quoted. If (LET (...) (FOO ...)) returns #!UNSPECIFIC, and you evaluate ((LET (...) (FOO ...))), you will still get the same error. 05:48:18 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 05:48:39 (You may observe a pattern in my last three examples.) 05:48:44 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 05:48:56 Riastradh: I guess I'm not used to the error messages then 05:49:55 #!UNSPECIFIC is an object that is basically useless, returned from procedures whose specifications do not specify what they return. #!UNSPECIFIC ensures that code does not accidentally rely on an accidental but non-portable value returned from these procedures. 05:52:01 Other constructions than procedures can return #!UNSPECIFIC, too. For example, one-armed IF expressions yield #!UNSPECIFIC if their conditions yield false, such as (IF #F 'FOO). This is because you didn't say what the expression should yield in that case, so Scheme is helpfully supplying a value that will cause trouble as soon as you try to do something with it other than to ignore it, which is ideally shortly after the IF expr 05:52:26 (`One-armed' here indicates that there is only one branch in the IF, whose general syntax is (IF []).) 05:52:48 but isnt one-armed valid? 05:53:00 It is valid, but you should not do anything interesting with the value that it returns. 05:53:34 If you cared about the value that it should return, you should have identified what value you wanted it to yield if the condition were false. 05:53:52 I.e., you should have used a two-armed IF. 05:54:27 what would be nice about the error is if it again where it is happening 05:54:47 I'm sorry, but I can't parse that sentence. 05:55:01 i meant about the unspecific error 05:55:53 You can find more information about what Scheme was doing when it signalled the error, by entering the debugger, either in Edwin or by evaluating (debug) at the error prompt in the REPL. 05:56:44 Riastradh: how does one do that in plt scheme? 05:56:54 I don't know. 05:58:21 jonrafkind [n=jon@pool-70-22-235-25.bos.east.verizon.net] has joined #scheme 05:58:22 reprore [n=reprore@EM114-48-25-189.pool.e-mobile.ne.jp] has joined #scheme 06:01:44 Elly: You use DrScheme, and it highlights the expression in red, gives arrows that identify the stack at the point it failed, and if you really want, pop up a stacktrace window too. 06:02:04 I don't use drscheme though :P 06:02:24 Then you need to read about using errortrace. 06:09:19 -!- incubot [i=incubot@klutometis.wikitex.org] has quit [Read error: 104 (Connection reset by peer)] 06:12:21 incubot [i=incubot@klutometis.wikitex.org] has joined #scheme 06:23:17 -!- jonrafkind [n=jon@pool-70-22-235-25.bos.east.verizon.net] has quit [Read error: 110 (Connection timed out)] 06:25:45 youloosegudaysir [i=ind@190.205.197.116] has joined #scheme 06:25:55 Is it possible to write a kernel with Scheme? 06:30:14 with an appropriate scheme interpreter, yes 06:33:00 Elly in which type of programs you would choose Scheme over C or python?, what would someone gain by using Scheme? 06:33:31 I would choose Scheme over C whenever I could get away with it just because it makes development so much faster 06:33:55 I would choose it over Python because I think it's prettier and more elegant :P 06:35:42 Elly oh I see. I'm checking some stanford programming classes videos, and the teacher talked about teaching Scheme. I was curious as to what Scheme may offer to force the guy to teach it :) 06:35:55 I don't know about "force" 06:36:07 it is a good teaching language, I think 06:48:18 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 06:48:44 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 06:51:20 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 06:53:37 jonrafkind [n=jon@pool-70-22-235-25.bos.east.verizon.net] has joined #scheme 07:03:51 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["leaving"] 07:06:37 dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has joined #scheme 07:09:23 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 07:09:53 `Peter [n=pk@188-23-7-1.adsl.highway.telekom.at] has joined #scheme 07:10:22 -!- `Peter [n=pk@188-23-7-1.adsl.highway.telekom.at] has quit [Client Quit] 07:10:37 `Peter [n=pk@188.23.7.1] has joined #scheme 07:24:15 -!- eli [n=eli@winooski.ccs.neu.edu] has quit [Remote closed the connection] 07:24:21 abbe [n=abbe@box.of.abbe.who.is.a.member.of.pirateparty.in] has joined #scheme 07:28:00 -!- jimi_hendrix [n=quassel@unaffiliated/jimihendrix] has quit [Read error: 113 (No route to host)] 07:42:19 -!- xwl [n=user@222.35.122.240] has quit [Remote closed the connection] 07:42:34 xwl [n=user@222.35.122.240] has joined #scheme 07:43:33 jewel [n=jewel@dsl-242-163-86.telkomadsl.co.za] has joined #scheme 07:46:05 Modius_ [n=Modius@24.174.112.56] has joined #scheme 07:46:31 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 07:47:46 -!- `Peter [n=pk@188.23.7.1] has quit [] 07:48:19 -!- Modius_ [n=Modius@24.174.112.56] has quit [Client Quit] 07:48:38 Modius [n=Modius@24.174.112.56] has joined #scheme 07:51:42 -!- ToreN [n=tore@181.133.34.95.customer.cdi.no] has quit ["leaving"] 08:03:01 Edico [n=Edico@unaffiliated/edico] has joined #scheme 08:11:42 Narrenschiff [n=ritchie@xolotl.plus.com] has joined #scheme 08:11:43 -!- dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has quit [Read error: 110 (Connection timed out)] 08:22:29 -!- abbe [n=abbe@box.of.abbe.who.is.a.member.of.pirateparty.in] has quit [] 08:25:52 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 08:26:16 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 08:26:21 -!- nukem [n=nukem@static-98-140-86-94.dsl.cavtel.net] has quit ["Leaving"] 08:35:00 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 08:35:10 ASau [n=user@83.69.240.52] has joined #scheme 08:50:44 -!- reprore [n=reprore@EM114-48-25-189.pool.e-mobile.ne.jp] has quit [Remote closed the connection] 08:53:52 reprore [n=reprore@EM114-48-211-247.pool.e-mobile.ne.jp] has joined #scheme 08:53:55 -!- reprore [n=reprore@EM114-48-211-247.pool.e-mobile.ne.jp] has quit [Remote closed the connection] 08:57:08 eli [n=eli@winooski.ccs.neu.edu] has joined #scheme 08:59:37 HG` [n=HG@xdsley229.osnanet.de] has joined #scheme 09:09:12 -!- jewel [n=jewel@dsl-242-163-86.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 09:14:47 ASau` [n=user@83.69.240.52] has joined #scheme 09:15:10 -!- ASau [n=user@83.69.240.52] has quit [Read error: 104 (Connection reset by peer)] 09:29:47 hkBst [n=hkBst@gentoo/developer/hkbst] has joined #scheme 09:34:58 -!- hkBst [n=hkBst@gentoo/developer/hkbst] has quit [Read error: 104 (Connection reset by peer)] 09:44:35 -!- ASau` is now known as ASau 09:45:26 -!- HG` [n=HG@xdsley229.osnanet.de] has quit [Client Quit] 10:05:50 owen1 [n=oren@cpe-72-129-83-194.socal.res.rr.com] has joined #scheme 10:11:33 -!- xwl [n=user@222.35.122.240] has quit [Remote closed the connection] 10:13:26 -!- owen1 [n=oren@cpe-72-129-83-194.socal.res.rr.com] has quit ["Lost terminal"] 10:15:19 HG` [n=HG@xdslek049.osnanet.de] has joined #scheme 10:15:25 jorick [n=noname@200.57-240-81.adsl-dyn.isp.belgacom.be] has joined #scheme 10:15:46 does anyone know if there is a platform similar to robocode for scheme? 10:25:17 -!- HG` [n=HG@xdslek049.osnanet.de] has quit [Client Quit] 10:25:20 Doesn't robocode run on Java? You could use Kawa or SISC then 10:31:53 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 10:34:21 yeah but if its all scheme it's easier for me to hack on 10:42:01 HG` [n=HG@xdsley221.osnanet.de] has joined #scheme 10:46:54 -!- HG` [n=HG@xdsley221.osnanet.de] has quit [Client Quit] 10:49:45 ASau [n=user@83.69.240.52] has joined #scheme 10:50:04 -!- Narrenschiff [n=ritchie@xolotl.plus.com] has quit [] 10:56:20 masm [n=masm@bl10-211-142.dsl.telepac.pt] has joined #scheme 10:58:34 dzhus [n=sphinx@93-80-212-202.broadband.corbina.ru] has joined #scheme 11:21:44 incubot: how do you feel about robocop? 11:21:48 "On a scale from Robocop to your sister's church play, it's a cosplay show with a big budget and lots of squishy noises." 11:31:53 -!- sladegen [n=nemo@unaffiliated/sladegen] has quit [Nick collision from services.] 11:32:02 sladegen [n=nemo@unaffiliated/sladegen] has joined #scheme 11:37:26 `Peter [n=pk@188-23-1-155.adsl.highway.telekom.at] has joined #scheme 11:37:32 qnn- [i=ind@190.205.197.116] has joined #scheme 11:55:24 -!- dzhus [n=sphinx@93-80-212-202.broadband.corbina.ru] has quit [Remote closed the connection] 11:58:31 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 11:58:53 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 12:01:15 -!- jorick [n=noname@200.57-240-81.adsl-dyn.isp.belgacom.be] has quit [Remote closed the connection] 12:05:45 -!- youloosegudaysir [i=ind@190.205.197.116] has quit [Read error: 110 (Connection timed out)] 12:16:22 zeroish` [n=zeroish@c-76-98-192-104.hsd1.nj.comcast.net] has joined #scheme 12:17:59 sepult [n=user@xdsl-87-78-103-249.netcologne.de] has joined #scheme 12:19:51 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 12:20:26 npe [n=npe@94.224.251.223] has joined #scheme 12:26:22 -!- jonrafkind [n=jon@pool-70-22-235-25.bos.east.verizon.net] has quit [Connection timed out] 12:30:43 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 12:33:36 jonrafkind [n=jon@129.10.201.78] has joined #scheme 12:44:03 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 12:44:28 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 12:47:46 Narrenschiff [n=ritchie@xolotl.plus.com] has joined #scheme 12:48:14 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 54 (Connection reset by peer)] 12:48:39 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 12:54:41 reprore_ [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 13:16:10 luz [n=davids@189.122.90.116] has joined #scheme 13:16:41 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 13:19:35 -!- masm [n=masm@bl10-211-142.dsl.telepac.pt] has quit ["Leaving."] 13:22:15 edwardk_ [i=4bdf6484@gateway/web/freenode/x-hppuqjbdxlqqvbya] has joined #scheme 13:22:43 -!- edwardk_ is now known as edwardk 13:41:49 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 13:42:12 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 13:43:12 HG` [n=HG@xdsler185.osnanet.de] has joined #scheme 13:46:07 -!- patmaddo_ [n=patmaddo@ip68-5-45-222.oc.oc.cox.net] has quit ["Leaving..."] 13:55:49 -!- saccade [n=saccade_@COMBINATOR.MIT.EDU] has quit [Read error: 110 (Connection timed out)] 13:58:01 jewel [n=jewel@dsl-242-163-86.telkomadsl.co.za] has joined #scheme 14:01:20 -!- sepult [n=user@xdsl-87-78-103-249.netcologne.de] has quit [Connection timed out] 14:04:30 -!- zeroish` [n=zeroish@c-76-98-192-104.hsd1.nj.comcast.net] has quit [Read error: 110 (Connection timed out)] 14:18:04 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 14:29:41 -!- hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has quit [Read error: 104 (Connection reset by peer)] 14:33:06 hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 14:40:18 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 14:40:42 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 14:40:52 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 14:41:07 -!- qnn- [i=ind@190.205.197.116] has quit [Read error: 110 (Connection timed out)] 14:47:57 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 14:48:12 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 14:48:37 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 14:58:22 Nshag [i=user@193.248.206.147] has joined #scheme 14:58:39 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 15:00:33 -!- saccade__ [n=saccade@VPN-EIGHTY-TWO.MIT.EDU] has quit [Read error: 60 (Operation timed out)] 15:06:48 antoszka [n=antoszka@unaffiliated/antoszka] has joined #scheme 15:08:24 MrFahrenheit [i=RageOfTh@92.36.156.226] has joined #scheme 15:16:35 ak70 [n=ak70@195.158.93.153] has joined #scheme 15:27:59 Pepe_ [n=ppjet@78.116.11.105] has joined #scheme 15:42:09 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 15:45:06 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [Read error: 104 (Connection reset by peer)] 15:45:18 abbe [n=abbe@box.of.abbe.who.is.a.member.of.pirateparty.in] has joined #scheme 15:45:28 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 15:49:02 araujo [n=araujo@gentoo/developer/araujo] has joined #scheme 15:50:26 -!- antoszka [n=antoszka@unaffiliated/antoszka] has quit ["+++ killed by SIGSEGV +++"] 16:03:44 -!- HG` [n=HG@xdsler185.osnanet.de] has quit [Client Quit] 16:05:41 -!- jonrafkind [n=jon@129.10.201.78] has quit [Connection timed out] 16:06:42 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 16:21:48 -!- cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has quit ["If technology is distinguishable from magic, it is insufficiently advanced."] 16:25:58 mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #scheme 16:26:01 francogrex [n=franco@91.177.20.87] has joined #scheme 16:26:06 sepult [n=user@xdsl-87-78-30-49.netcologne.de] has joined #scheme 16:26:41 Hi; I'm a common lisp user. But i've been intriduced to a palm OS application called LispMe which is scheme based 16:27:08 it's very simple (doesn't support map or macros) 16:27:32 simple? More like feeble! 16:27:41 If it doesn't have map it's very incomplete 16:28:12 sjamaan: yes it was very incomplete. but I'm now interested to develop my scheme: what is the best to work with implementation? 16:28:25 That's a loaded question in here :) 16:28:33 I woild like to be able to make standalone fast executables on windows XP 16:28:51 francogrex: I think LispMe was developed -- and later abandoned -- by a guy who's a regular here 16:28:53 by best I mean being able to mean 16:29:22 being able to develop small standalone exe 16:29:26 rudybot: seen Daemmerung 16:29:27 *offby1: Daemmerung was seen in/on #scheme four weeks, three days ago, saying "Rolled back to svn 1.6.2, no joy. Oh, well. I don't need to be fussing with this today anyway.", and then Daemmerung was seen quitting in/on 1133sae.mazama.net four weeks, three days ago, saying ""Smoove out."" 16:29:35 to distributed, something along the C excetubales 16:29:59 francogrex: PLT scheme should do that 16:30:19 It's probably the one with the best support for Windows currently 16:30:31 offby1: it's a shame it was abandoned; it had potential, but they way it is now is very poor; it actually annpoyed me at times because i was reading siome literature about scheme and not being able to applyt them in LispME 16:30:40 Felix has been working hard on Windows support for Chicken, so you can try luck with that too 16:31:05 sjamaan: plt scheme ok; is he exe small and fast as well? 16:31:21 I don't know, I don't use Windows 16:31:40 Nor PLT 16:33:26 ah ok; iwas reading alsoi about "guile" being fast but not dsure makes exe 16:34:03 I don't think it makes stand-alone executables, but you could make one with a little C wrapper 16:34:22 francogrex: guile is notoriously slow, and doesn't make standalone exes, and probably doesn't work at all on Windows. 16:34:45 offby1: I think it will work on Windows; I've seen Gimp on Windows and that includes guile, right? 16:34:47 (unless you use Cygwin, but ... that way lies madness) 16:34:57 sjamaan: gimp most certainly does NOT include guile 16:35:08 offby1: It does nowadays 16:35:08 it includes some lame-o thing that claims to be scheme but isn't 16:35:11 it does? 16:35:14 :) 16:35:23 news to me 16:35:28 I don't know if the Gimp I saw back then already included guile though 16:35:50 ldd $(type -p gimp) | egrep guile => zip, nada, bupkis 16:36:21 cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has joined #scheme 16:36:28 "GIMP operations can be automated with scripting languages. The Script-Fu is a Scheme based extension language implemented using TinyScheme, GIMP can also be scripted in Perl, Python (Python-fu), or Tcl." 16:36:41 GIMP uses (ugh) tinyscheme... 16:36:50 -!- reprore_ [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote closed the connection] 16:37:25 reprore_ [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 16:37:50 ah, tinyscheme 16:37:59 sorry bout the FUD 16:38:34 *offby1* scowls 16:38:35 repror___ [n=reprore@116.82.73.92] has joined #scheme 16:38:36 anyway. 16:41:45 -!- reprore_ [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Read error: 60 (Operation timed out)] 16:48:40 gambit works well on windows 16:52:56 mbishop_ [n=martin@unaffiliated/mbishop] has joined #scheme 17:00:54 offby1` [n=user@q-static-138-125.avvanta.com] has joined #scheme 17:02:26 rudybot_ [n=luser@q-static-138-125.avvanta.com] has joined #scheme 17:06:00 -!- offby1 [n=user@pdpc/supporter/monthlybyte/offby1] has quit [Read error: 60 (Operation timed out)] 17:06:27 snurble: ok maybe it was gambit-C then that was being talked about that it's fast and makes exe? 17:07:10 HG` [n=HG@xdslfa165.osnanet.de] has joined #scheme 17:08:12 francogrex: why don't you just download a scheme or two and try them for yourself? 17:08:48 offby1: will do, I think i'll strat with PLT. 17:09:26 -!- mbishop [n=martin@unaffiliated/mbishop] has quit [Read error: 110 (Connection timed out)] 17:11:11 then Gambit... not sure, i'm not reading good reviews for gambit making executables 17:11:43 Consider chez, too; I've never used it but it seems to have a good reputation 17:11:55 chez ok 17:12:06 -!- offby1` is now known as offby1 17:13:03 francogrex: I used chez in college. It's got nicely features and is powerful, but I chose against it when I recently decided to come back to Scheme for professional use. 17:13:31 it has a couple of issues: (1) the main version costs $9,000 USD 17:13:43 (there is a free version, but it lacked certain components) 17:14:10 (2) because of the price tag, it appears to have a fairly small community of active users, which means a small set of libraries. 17:14:31 dstorrs: ok thanks, i didn't know it was commercial 17:14:49 well, as I said, there is a free version 17:14:59 but it's had some bits removed 17:15:11 (though I don't remember offhand what they were, only that I considered them significant) 17:15:32 dstorrs: yeah I don't like that. everyone rants and raves aboyt free Common,lisp version of lispworks 17:15:53 please feel free to confirm what I'm saying; I can't remember the specifics and could well have gotten it wrong. 17:16:04 when i tried I discovered that it cannot make executable 17:16:18 it was shit 17:16:30 ah. 17:16:43 i supposed chez would be the same 17:16:54 -!- rudybot [n=luser@q-static-138-125.avvanta.com] has quit [Read error: 110 (Connection timed out)] 17:17:01 to stop u from using it for distribution purposes 17:17:02 sorry you had to trip over that. it's always annoying to spend time on something and then find it doesn't meet your needs. 17:17:22 dstorrs: indeed it was very annoyinf.. 17:17:40 on an unrelated topic...is there any difference whatsoever between string=? and equal? aside from the fact that equal? can compare a larger set of elements and string=? can only do strings? 17:17:54 dstorrs: an excellent question. 17:17:58 I was wondering just that today 17:18:05 as I did the latest "programming praxis" problem 17:18:44 ppoit.C 17:19:05 offby1: did you come to any conclusions? 17:22:01 I suspect there's no difference (other than what you said) 17:22:20 dstorrs: doesn' the R5RS docs saying anything about the equal and string= differences? 17:25:03 francogrex: oh fine, MAKE me go read the definitive document, see if I care! :P 17:25:53 francogrex: btw, as previously mentioned, a few months ago I was trying to choose a Scheme. I wrote up a MUST / SHOULD / COULD list for myself and started compiling a list of which scheme versions met the requirements. 17:26:02 nothing met them all, but PLT was the best choice overall. 17:26:05 -!- Narrenschiff [n=ritchie@xolotl.plus.com] has quit [] 17:26:22 here's the list (warning: rough and ready scribbling) http://paste.lisp.org/display/85653 17:26:25 Narrenschiff [n=ritchie@xolotl.plus.com] has joined #scheme 17:26:27 dstorrs: reassuring, it's the one I just downloaded 17:26:36 i'll read the list 17:26:37 thanks 17:26:40 np 17:35:42 I have started my training with PLT now :) I have 2 questions? 17:35:51 please see my first post here: http://paste.lisp.org/display/85870 17:36:19 1st Q, how to I make a random number (between 0.0 and 1.0)? 17:36:39 first thing you should do: http://docs.plt-scheme.org/ 17:36:49 2nd, can I cons directly into a vector? or do i have to use string->vector 17:36:49 read the Guide, browse the Reference 17:37:01 cons is for manipulating lists. 17:37:08 vectors are manipulated differently 17:37:09 sorry i meant list->vector 17:38:07 remember that they are different data structures in memory. A vector is an array, a list is a linked list. 17:38:22 dstorrs: ok 17:40:18 also, check http://planet.plt-scheme.org/ for libraries. you're going to LOVE the package system. :> 17:41:19 specifically, there is no installation step--just put: (require ) in your code and the appropriate library gets downloaded and installed if it's not already local. 17:44:29 masm [n=masm@bl11-79-77.dsl.telepac.pt] has joined #scheme 17:45:46 ok but strange that in R5RS when I type either (random 5) or (random 1.0) it gives an error 17:48:41 works for me. but I'm running mzscheme in a term window 17:49:01 might be an issue of languages...are you using DrScheme? 17:49:31 it implements this odd "choose a language" feature which might be the problem. 17:49:34 try this: 17:49:37 #lang scheme 17:49:40 (random 5) 17:49:45 then hit start. 17:51:50 yes DrSheme, if I use MzScheme it works 17:51:55 the consomle I mean 17:51:58 console 17:52:05 what is the difference? 17:52:39 there is even a mrEd !! weird 18:01:48 ravenex [n=raven@17-243-252-87-dynamic-pool.gprs.mts.by] has joined #scheme 18:10:20 haole [n=ivan@189.35.188.83] has joined #scheme 18:10:37 is there a way, in plt, to get the hostname and the port that a socket is bound to? 18:10:46 i can't find anything like this in the docs 18:11:25 a challenge! 18:13:34 haole: do you have a socket object (whatever that is), or do you have port objects? 18:14:12 -!- ASau [n=user@83.69.240.52] has quit [Read error: 104 (Connection reset by peer)] 18:14:21 ASau [n=user@83.69.240.52] has joined #scheme 18:14:23 i have multiple threads that have to use the same socket... i'm trying to figure things out the scheme way... so, i guess i have a socket object 18:14:59 without having to pass the hostname, the port and the socket to every thread that i have 18:16:32 how did you get this socket object? 18:17:05 i have a function that starts the connection with the server and bounds this socket to it 18:18:16 what function is that? 18:18:18 dstorrs: in your document you are comparing PLt with SBCL and clisp 18:18:32 see, I don't think PLT scheme has a "socket" type, so I'm not sure I understand what you're doing 18:18:56 I think you're mixing apples and oranges 18:19:21 does this socket option answer #t to the "udp?" procedure? 18:19:23 offby1: wait a momment... gonna get that 18:19:28 sbcl is common lisp as you know and its power is very diffrent from any scheme 18:19:30 offby1: exactly 18:20:59 offby1: (define (make-socket hostname init-port) (udp-open-socket hostname init-port))) 18:22:10 ah, I don't know anything about udb sockets :-( 18:22:21 anyway I suspect they don't carry hostname and port info around with them. 18:22:56 now, you could always define a structure that included hostname, port number, and the socket itself; and pass -that- around instead of just the socket; but that would require rewriting all the client code that expects a socket. 18:23:15 offby1: that's okay... i have some difficulties in handling data using scheme... that's probably the source of my problem 18:23:35 offby1: that's kinda C-ish :D 18:23:41 *shrug* 18:23:43 it's how I'd do it 18:23:52 gonna try that :) thanks 18:26:11 -!- Narrenschiff [n=ritchie@xolotl.plus.com] has quit [] 18:30:36 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [Read error: 104 (Connection reset by peer)] 18:30:46 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 18:40:18 rudybot: y'all there? 18:41:12 -!- rudybot_ is now known as rudybot 18:41:19 rudybot: y'all there? 18:41:19 *offby1: eh? Try "rudybot: help". 18:42:47 incubot: git remote prune origin 18:42:50 need to prune the Planet directory 18:45:37 offby1` [n=user@q-static-138-125.avvanta.com] has joined #scheme 18:46:24 -!- offby1 [n=user@pdpc/supporter/monthlybyte/offby1] has quit [Nick collision from services.] 18:46:27 -!- offby1` is now known as offby1 18:47:15 rudybot_ [n=luser@q-static-138-125.avvanta.com] has joined #scheme 18:50:22 -!- haole [n=ivan@189.35.188.83] has quit ["Ex-Chat"] 18:51:15 -!- HG` [n=HG@xdslfa165.osnanet.de] has quit [Client Quit] 18:52:06 -!- rudybot [n=luser@q-static-138-125.avvanta.com] has quit [Read error: 60 (Operation timed out)] 18:53:51 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 18:53:57 ASau [n=user@83.69.240.52] has joined #scheme 19:06:43 Summermute [n=scott@c-68-55-207-173.hsd1.dc.comcast.net] has joined #scheme 19:08:09 -!- francogrex [n=franco@91.177.20.87] has quit ["Leaving"] 19:13:14 Am I the only one skeptical of a "little language" / "big language" architecture for rsr7? 19:13:57 Gee, what's `rsr7'? 19:14:42 The next scheme standard following the current (fairly recent) rsr6 19:14:58 Is it an acronym? What does it stand for? 19:15:35 It's on the tip of my tongue - google will pull it up 19:15:42 hehe 19:15:53 r7rs you mean 19:16:16 blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 19:16:17 whoops :-) too much hooch ;-) 19:18:02 first, don't we already have a series of historical rNrs standards defining "little" (< 50 page) scheme standards? 19:26:27 But they are lacking a coherent module system for instance. 19:27:01 It's not really possible to write portable multi-module scheme programs in r5rs or under 19:31:06 jonrafkind [n=jon@129.10.201.78] has joined #scheme 19:32:29 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Read error: 110 (Connection timed out)] 19:34:14 I agree - but from reading the dissenters, I would think the new module system as it stands would be one of the "buzz killers" for the "little" subset language. 19:35:26 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 19:35:34 ASau [n=user@83.69.240.52] has joined #scheme 19:36:32 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 19:37:32 `Peter_ [n=pk@188-23-10-109.adsl.highway.telekom.at] has joined #scheme 19:37:52 -!- abbe [n=abbe@box.of.abbe.who.is.a.member.of.pirateparty.in] has quit [] 19:37:54 Dunno, I haven't been keeping up to date 19:39:19 rudybot_: later tell arcfide Nice talk! 19:39:19 minion: memo for arcfide: TimMc told me to tell you: Nice talk! 19:39:19 Remembered. I'll tell arcfide when he/she/it next speaks. 19:45:00 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 19:46:39 saccade [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 19:49:13 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 19:49:19 -!- Summermute [n=scott@c-68-55-207-173.hsd1.dc.comcast.net] has quit [] 19:50:56 Summermute [n=scott@c-68-55-207-173.hsd1.dc.comcast.net] has joined #scheme 19:51:20 haole [n=ivan@189.35.188.83] has joined #scheme 19:52:18 -!- Summermute [n=scott@c-68-55-207-173.hsd1.dc.comcast.net] has quit [Client Quit] 19:55:21 -!- `Peter [n=pk@188-23-1-155.adsl.highway.telekom.at] has quit [Connection timed out] 19:55:22 -!- `Peter_ is now known as `Peter 19:55:54 can someone give me a tip about counting time? i need a thread that does something each 100 milliseconds, but the only way i can think of is getting the current time before the trigger is set, keep looping the thread and subtracting the new time from the reference time until it is bigger then 100 milliseconds... however, this method ain't exact :( 19:56:18 Most Scheme systems have some way to pause the current thread for a certain number of milliseconds. 19:57:05 100 ms is probally to small to get much more accurate then what you suggested 19:57:41 At least in a preemptivelly threaded, GCed system 19:57:58 you'll have to miss it every once in a while 19:58:29 Arelius: i think you are right... gonna think about another solution then 19:58:41 haole: What's the problem? 19:59:17 100 milliseconds? That's a tenth of a second. In, say, MIT Scheme, GC time for about four megabytes of live data is half a millisecond, i.e. 0.5% of the time that haole is interested in. 19:59:37 Hrm 20:00:09 I was under the assumption he needed a lot of percision 20:00:21 Arelius: i was writing a mock server for my program... but my method was giving me more than 10% of error 20:00:22 How much precision do you need, haole? 20:00:33 his thought was to run a tight loop until he got over 100ms 20:00:38 Riastradh: milliseconds precission... 10^-3 :D 20:00:39 but if that isn't exact enough 20:00:55 Maybe you could elaborate on the problem you are trying to solve by executing something every hundred milliseconds, haole. 20:01:17 haole: You're method would likely hit at ~100 every time if doing nothing but checking 20:01:24 Riastradh: i just found out the sleep function in PLT which "promises" me to give it with precision... gotta love those plt candies :D 20:02:20 Arelius: i must have messed up something... gonna try the sleep now! i'll post back the results so we can see if plt is accurate :D 20:04:12 K 20:06:01 Also, is it that you want to run something every hundred milliseconds, or that you want a hundred milliseconds between each run? 20:06:46 dsmith [n=dsmith@cpe-173-88-196-177.neo.res.rr.com] has joined #scheme 20:07:35 Riastradh: both! i have 100ms do to something, and i need a thread to tell me how far am i from blowing my schedule 20:08:03 and plt's scheme is pretty accurate... just what i needed... thanks again guys 20:08:31 duncanm: la la la 20:08:40 -!- rudybot_ is now known as rudybot 20:08:48 I don't figure a seperate thread will be able to adjust the scheldule 20:09:41 Arelius: i can ask it once in a while how i'm doing... it's an AI project... this is part of the decision process 20:09:53 hrm 20:10:17 -!- masm [n=masm@bl11-79-77.dsl.telepac.pt] has quit ["Leaving."] 20:10:32 Still, wouldn't it be just as effective to measure the length of "something" and then use that to adjust future somethings? 20:11:05 or even just measure at the same places you would ask "how i'm doing" 20:11:45 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 20:14:43 Arelius: could be... your solution looks interesting... gonna try that too and see which one goes better :) 20:16:45 dudleyf [n=dudleyf@65.243.31.107] has joined #scheme 20:17:59 -!- dudleyf [n=dudleyf@65.243.31.107] has quit [Client Quit] 20:18:11 Luck 20:18:17 dudleyf [n=dudleyf@65.243.31.107] has joined #scheme 20:18:19 That's how we do it in games anyways 20:26:09 -!- ravenex [n=raven@17-243-252-87-dynamic-pool.gprs.mts.by] has quit [Read error: 104 (Connection reset by peer)] 20:33:55 kniu [n=kniu@CMU-284828.WV.CC.CMU.EDU] has joined #scheme 20:34:45 -!- blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has quit [] 20:36:35 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 20:41:43 antoszka [n=antoszka@cl-142.waw-01.pl.sixxs.net] has joined #scheme 20:47:22 -!- saccade [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 20:48:05 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 104 (Connection reset by peer)] 20:48:29 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 20:54:51 -!- `Peter [n=pk@188-23-10-109.adsl.highway.telekom.at] has quit [Read error: 104 (Connection reset by peer)] 20:56:17 `Peter [n=pk@188-23-10-109.adsl.highway.telekom.at] has joined #scheme 20:58:22 jao [n=jao@31.Red-83-33-230.dynamicIP.rima-tde.net] has joined #scheme 21:06:20 -!- copumpkin is now known as valleypumpkin 21:08:13 -!- `Peter [n=pk@188-23-10-109.adsl.highway.telekom.at] has quit [Read error: 104 (Connection reset by peer)] 21:08:13 drybowser6 [n=drybowse@ppp-70-226-222-168.dsl.spfdil.ameritech.net] has joined #scheme 21:09:37 -!- valleypumpkin is now known as copumpkin 21:16:16 jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has joined #scheme 21:17:13 karlw [n=user@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 21:18:04 Repeating an earlier question: other than S48/scsh and MIT Scheme, does anyone know which Schemes garbage-collect unreferenced symbols and which don't? 21:18:11 (S48 does, MIT doesn't) 21:18:18 I think Chicken might not. 21:18:29 Perhaps I should clarify what I wrote on the PLT mailing list yesterday. 21:18:46 I dont :( (yet) 21:19:33 -!- Edico [n=Edico@unaffiliated/edico] has quit ["Ex-Chat"] 21:20:06 chicken doesn't afaik. 21:23:55 While PLT isn't ``big'' if you don't use libraries like MrEd, classes, or contracts, R6RS has many requirements that are too restrictive. 21:24:36 Heh, the steering committee is taking questions now. 21:25:37 jcowan, you can set the maximum heap size to any Chicken executable by passing `-:hmN', where N is the number of bytes or words or something that Chicken will not let its heap exceed in size. Doing that, a loop creating symbols with different names causes Chicken to run out of memory and deliver a nice error message, or to fail with a bus error, or to fail with a segmentation fault. 21:25:46 -!- drybowser6 [n=drybowse@ppp-70-226-222-168.dsl.spfdil.ameritech.net] has quit ["Leaving"] 21:27:07 It's not bad to have an implementation with a lot of useful features, but it doesn't make sense to standardize features that may be (portably) implemented with the base language. 21:29:44 -!- haole [n=ivan@189.35.188.83] has quit ["Ex-Chat"] 21:30:15 For example, it's even possible to implement something like define-struct using only procedures. Though you end up with something like (ask foo 'field-1). 21:32:10 karlw: So you'd be against standardizing the "list" procedure? 21:32:35 PLT isn't good because of R6RS, it's good because a lot of dedicated developers focused on writing libraries for it. 21:32:59 jcowan: Well, in principle, yes. 21:33:50 in practice? 21:36:29 It's really a matter of how ubiquitous something is, how difficult it is for implementors to support, platform issues, and community needs. 21:36:49 owen1 [n=oren@cpe-72-129-83-194.socal.res.rr.com] has joined #scheme 21:37:01 (I wrote `list' as a homework exercise) 21:37:25 what is the best scheme book for someone coming from oo world? (c#/ruby) 21:37:43 owen1: SICP 21:38:01 karlw: should i read it from start to finish? 21:39:19 all programmers need to read it from start to finish :) 21:39:25 zeroish` [n=zeroish@c-76-98-192-104.hsd1.nj.comcast.net] has joined #scheme 21:39:26 what about 'the little schemer'? 21:39:29 Yes. Then move to a small cabin in Montana and build the explicit-control evaluator with box cutters, cardboard, and aluminum. 21:40:36 If you have significant math or programming experience, SICP is better. 21:40:47 -!- jewel [n=jewel@dsl-242-163-86.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 21:40:58 for varying degrees of better 21:42:55 got it. as far as i understand, i should dive into scheme but for most real world work (esp web development) there is no real need for it. 21:43:24 ``Need 21:43:41 '' is a rather subjective term.\ 21:43:49 it mainly to open my mind to new world, and might help in the functional aspects of other languages as ruby. 21:44:15 true 21:47:33 If ``Mathematics XYZ: Non-Euclidean Manifold Topology'' sounds like your idea of fun, then go with SICP. 21:47:53 *Riastradh* blinks. 21:48:54 exexex [n=chatzill@85.102.132.36] has joined #scheme 21:49:22 Otherwise, if you just want to learn more about functional programming, check out this Web site: http://learnyouahaskell.com/ 21:49:25 Currently: Discussion of location of ICFP 2010. 21:49:28 I need scheme for web development. Trying to write a web page handler without proper continuations is just a concurrency nightmare. 21:50:03 I couldn't do it in python, so had to find a better language that could handle that stuff without increasing complexity. 21:50:15 (And location of Scheme Workshop) 21:50:38 In SICP one encounters some minimal calculus and number theory; there is certainly no topology involved, and I don't think the word `manifold' occurs in the book. 21:51:17 Yeah SICP is more like "scheme from literally scratch" than it is a mathematical treatise. 21:51:21 (Nor, for that matter, `topology'.) 21:51:32 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [Connection timed out] 21:53:55 copumpkin [n=pumpkin@dhcp-212-238.cs.dartmouth.edu] has joined #scheme 21:54:19 Riastradh: I like the top-down ``from scratch'' approach. 21:57:02 karlw: so SICP has a lot of theory that might help me in the academic world and a more practical approach will be learnyouhaskell..thanks a lot 21:58:27 owen1: learnyouhaskell won't teach you scheme 21:59:51 true, but it might be more practicle, according to karlw 22:00:12 if you are trying to learn Haskell, for sure 22:00:23 if if pure functional programming is what you want 22:00:30 Haskell is also good for that 22:01:13 But I'd evaluate what you are trying to learn first, as Haskell and Lisp teach very differen't things 22:01:43 Either is practical. Theory gives you insight and it's fun. You can always learn ``practical'' stuff from library documentation. 22:01:57 -!- edwardk [i=4bdf6484@gateway/web/freenode/x-hppuqjbdxlqqvbya] has quit [Ping timeout: 180 seconds] 22:02:44 zephyrfalcon [n=zephyrfa@adsl-074-229-200-227.sip.gnv.bellsouth.net] has joined #scheme 22:04:39 I wouldn't call learnyouahaskell.com more practical than SICP. Both will teach you functional programming. 22:06:14 one has a list monster and the other doesn't, though 22:06:38 copumpkin: what do u mean my list monster? 22:06:39 http://learnyouahaskell.com/listmonster.png 22:06:58 :) 22:07:03 awesome 22:07:18 you can't beat the list monster 22:08:31 it's the _why of the haskell world. don't forget to keep another copy (-: 22:08:48 I hope BONUS doesn't disappear too! 22:09:23 SICP has a rambling diatribe about language standardization. 22:09:50 -!- sepult [n=user@xdsl-87-78-30-49.netcologne.de] has quit [Remote closed the connection] 22:10:26 -!- zephyrfalcon [n=zephyrfa@adsl-074-229-200-227.sip.gnv.bellsouth.net] has quit [] 22:10:36 -!- jonrafkind [n=jon@129.10.201.78] has quit [Read error: 110 (Connection timed out)] 22:12:51 karlw: can u say it again in english? 22:13:06 (i am not a natvie speaker) 22:13:06 http://learnyouahaskell.com/faq 22:14:55 owen1: You mean: ``SICP has a rambling diatribe about language standardization?'' 22:15:54 I'm just being facetious. 22:16:12 http://www.merriam-webster.com/dictionary/facetious 22:19:01 i didn't get the rambling diatrbie. i guess it means SICP has a lot of long and unnessesary discussions about scheme standards? 22:23:54 No, http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-15.html#footnote_Temp_158 22:23:57 -rudybot:#scheme- http://tinyurl.com/mqnoqq 22:27:08 so scheme's nil is simpler than lisp? 22:27:37 karlw: nevermind karlw, don't spend your energy. i need to read SICP.. 22:28:45 owen1: No, that footnote is a rambling diatribe about language standardization. 22:33:24 "f SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century." 22:33:28 if 22:34:04 "The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else." 22:39:21 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 22:39:27 owen1: pretty much 22:39:56 -!- p1dzkl [i=p1dzkl@208.92.234.202] has quit [Remote closed the connection] 22:40:13 The trouble with not standardizing "list" is that then you have to deal with people who write "cons*" or something like it instead. 22:40:34 Or worse, people who write "list" to mean something else. 22:40:47 -!- ak70 [n=ak70@195.158.93.153] has left #scheme 22:40:53 It's like Basic English, which has only 1000 words: 22:41:36 You might be willing to say "The person in military authority was the guide of his men in the army against the nation at war." 22:41:48 but I'll go with "The officer led his troops against the enemy." 22:42:17 And if English required us to define all our own words but those 1000, we'd have a hard time talking to each other. 22:42:38 So small standards make for large programs. 22:44:08 The idea is for implementors to voluntarily agree to support some interface for a library. 22:49:35 r2q2 [n=user@c-24-7-212-60.hsd1.il.comcast.net] has joined #scheme 22:51:46 Summermute [n=scott@c-68-55-207-173.hsd1.dc.comcast.net] has joined #scheme 22:52:01 If you standardize every library because people consider it ``useful'' then you're going the ``single de facto implementation'' route. This isn't necessarily bad, but some people may have legitimate reasons for not supporting something like unicode, IEEE floating point arithmetic, or a full exception system. The standard could say that unicode support is a good idea, but it's not good practice to distribute code where case sensiti 22:52:01 non-ASCII identifiers matter. 22:52:59 I certainly don't want to standardize *everything*. 22:53:22 I understand that one of the big reasons for the quick uptake of Java in Japan (and this is quite independent of what you think of Java or Japan) 22:53:54 is that it was the first major language that allowed Japanese programmers to use directly meaningful identifiers rather than transliterated or translated ones. 22:54:17 Would it be bad practice to distribute Scheme code whose identifiers make sense to francophones, for instance? 22:54:39 What's the purpose of a "standard" anyway? 22:54:59 -!- npe [n=npe@94.224.251.223] has quit [] 22:55:07 Portability between implementations and between users. 22:55:17 Exactly 22:55:23 Scheme has mostly tackled the problem of portability by providing portability *of* implementations. 22:55:37 Previous scheme standards did not, or just barely, met this criteria 22:55:54 But when someone comes along and says "Which Scheme should I use?", straightforward answers are not forthcoming. 22:56:12 Since Scheme programs tend to be bound to their implementations. 22:56:22 That exactly the proble 22:56:49 It's almost as bad as "Should I learn Perl, Python, or Ruby", though there is at least a common core in R5RS. 22:56:56 -!- repror___ [n=reprore@116.82.73.92] has quit [Remote closed the connection] 22:56:56 I say damn the torpedos and go r6rs 22:57:15 Anyone is free to implement any prior version if they want 22:57:38 But we need a target for compatible libraries (and more sophisticated ones, at that) 22:57:39 The trouble with R6RS (and I voted for it) is that many of its decisions were made too far in advance of implementation, and I pushed for some of those myself. 22:57:54 Hence the new plan for "small Scheme" and "large Scheme" 22:57:58 I myself hope to work on small Scheme. 22:58:00 Nothing is perfect :-) 22:58:27 Right, that's why we should all program in Basic on Windows. 22:58:34 I'm not against (natural) language support, but it shouldn't be an absolute requirement of the standard. 22:58:53 I have a question - how to have small scheme be acceptible, be a perfect subset, but deal with the feelings about the module system 22:58:55 ? 22:59:09 Boo on basic ! 22:59:22 Nothing's perfect, as you said. :-) 23:00:00 Lately I've been really grooving on PLT's "imperfect" typed scheme - very cool "scheme" 23:00:43 Summermute: It may be a good idea if ``large Scheme'' is a strict superset of ``small Scheme.'' 23:01:12 But really, can we have a "small scheme" sub of big scheme where not rebinding + and * is acceptible to people (or possible, somehow0 23:01:14 ? 23:01:58 a good idea, yes, a requirement, no 23:02:27 And the standard includes as much of ``large Scheme'' written in ``small Scheme'' as possible. 23:02:50 So, might there be changes to r6rs, where I am to understand the module system has to be "at the core," to accomodate a "losey goosier" small scheme? 23:03:18 In other words, I'm not against it - I just wonder what it will take to make it possible 23:04:53 Specifically, small Scheme SHOULD be a subset of large Scheme, and it SHOULD be compatible with R5RS and R6RS to the extent possible. 23:05:09 I got you there 23:05:11 It MUST have macros and a module system. 23:05:31 I'm no language lawyer, but that's what I understand 23:05:38 Write a module system in small Scheme. 23:06:02 Otherwise, enlighten me. 23:06:12 I fear that's beyond my powers. :-) 23:06:35 Aha, but I led to believe from the reading the r6rs votes that that is not so simple 23:06:57 Just implementing the module system in the small scheme, that is 23:07:23 Why? 23:07:42 Both modules and macros involve preprocessing the entire input, basically. 23:08:25 My addled brain thinks its because of the immutability of imported bindings. So some cool software might overload + and * to work on matrixes, but r6rs won't allow that. That's how I crudely understand it. 23:08:54 -!- exexex [n=chatzill@85.102.132.36] has quit [Remote closed the connection] 23:09:02 Read in files as lists. 23:09:36 lists of chars or like Common Lisp's reader? 23:09:43 Functions can't be overloaded in Scheme, but they can be redefined, and yes, you can redefine anything. You can redefine "car" as a macro and "lambda" as a function if you want. 23:10:09 -!- owen1 [n=oren@cpe-72-129-83-194.socal.res.rr.com] has quit ["Lost terminal"] 23:10:22 aack [n=user@a83-161-214-179.adsl.xs4all.nl] has joined #scheme 23:10:28 Ok, I need to go back to the drawing board to grok the conflict over r6rs 23:10:52 Most Scheme compilers have an option that says "assume global function bindings are constant" or "assume the usual integrations" allowing you to escape from that flexibility and compile + as (generic) addition everywhere, independent of context. 23:12:08 http://scheme-punks.cyber-rush.org/wiki/index.php?title=ERR5RS:Requirements_and_Goals should be informative 23:12:10 -rudybot:#scheme- http://tinyurl.com/lzw5bs 23:12:56 Oh wait - did the problem go something like this. I redefine + on module A and import this into my module B. But modules M,N,O that already see + don't get the change, since they don't import module A ?? Just trying to understand the controversies. 23:14:06 The main objections to R6RS weren't specifics, they were with the general approach. 23:14:26 That's a little scary all by itself :-) 23:14:37 See http://www.r6rs.org/ratification/results.html#X67 and read the rest of that page (it'll be repetitive, so you can skim it) 23:14:40 Thanks for the link - will read 23:16:02 Recalling a 20+ years old debate with Common Lisp, I really want to see a standard Scheme FFI :-) 23:17:39 so there is going to be a "small Scheme" and a "big Scheme built on small Scheme" for R7RS? 23:19:09 :) 23:19:35 Yes. 23:19:44 At least, so saith the Steering Committee. 23:19:52 Will "small scheme" be allowed to do things that "big scheme" cannot? 23:20:46 Who knows? Seek to join the committee, or WAFO. 23:21:49 If so, why not just fork the language? 23:22:07 What for? Compatibility is *good*. 23:22:28 *karlw* yawns. 23:22:32 I agree, my point is that if the small scheme is not a perfect subset 23:22:43 "The right to fork is like the right to sue, the right to strike, or the right to bear arms: you don't necessarily want to exercise any of these rights, but if someone tells you you can't, it's a sign that something may be wrong." 23:23:10 jcowan: Indeed. 23:23:14 :-) 23:24:08 Now I would add, the right to sue or be sued. 23:24:17 -!- eli [n=eli@winooski.ccs.neu.edu] has left #scheme 23:24:22 eli [n=eli@winooski.ccs.neu.edu] has joined #scheme 23:24:34 it might make people happy. 23:24:42 this split. 23:25:16 i just hope we don't waste alot of brain cells on creating a language where "scheme -small prog1.scm" works but "scheme -large prog1.scm" doesn't work (where prog1.scm is the same program) 23:25:36 jcowan: PLT collects unused symbols. 23:26:52 We should rename the steering committee to ``Scheme Central Committee,'' end the ratification process, and send anybody who disagrees with us to ``re-education camps'' in Antarctica. 23:31:22 Then, we make Scheme indentation sensitive, remove \#( and \#) from the character set, and change the language's name to ``Python.'' 23:31:36 When folks complain that r6rs is difficult to implement, to what might they be specifically refering? Larceny, Ikarus, PLT seem to be there (or very close?) 23:46:27 ``If you omit the -program option and do not redirect 23:46:27 the standard input, then Larceny will wait patiently 23:46:27 for you to type a complete top-level program into 23:46:29 -!- aack [n=user@a83-161-214-179.adsl.xs4all.nl] has quit [Remote closed the connection] 23:46:30 standard input, terminating it with an end-of-file.'' 23:47:11 ``You probably don't want to do that. Had you wanted 23:47:11 to type R6RS code at Larceny, you'd be using ERR5RS 23:47:11 mode instead. See HOWTO-ERR5RS.'' 23:48:03 -!- snurble [n=snurble@s83-191-238-2.cust.tele2.se] has quit [Read error: 54 (Connection reset by peer)] 23:48:27 Ah, 100% R6RS compliance, how lovely. 23:48:27 snurble [n=snurble@s83-191-238-2.cust.tele2.se] has joined #scheme 23:48:45 eli: Thanks 23:49:16 Summermute: They mean "difficult to implement from scratch" as opposed to "difficult to add R6RS to an existing implementation." 23:50:02 Ikarus is a counterexample, but it's certainly not mature yet. PLT is already a multiple-dialect implementation with some languages that are much more different from R5RS than R6RS is. 23:50:48 I'm not sure whether Larceny's R6RS support is an argument for or against R6RS, but many people darkly suspect it is the latter. 23:52:06 ``Since R6RS 23:52:06 libraries are non-portable anyway, the R6RS-mandated 23:52:06 checking for other portability problems is overly 23:52:06 prescriptive.'' 23:54:00 The Larceny doc/HOWTO-R6RS seems to give some ``implementation'' criticisms. 23:56:19 interesting... 23:56:57 well at least larceny supports r5, r6, and err5rs or whatever 23:57:05 good to have options 23:59:53 -!- dudleyf [n=dudleyf@65.243.31.107] has quit []