00:04:04 jim__ [~jim@ool-18bbd5b2.static.optonline.net] has joined #scheme 00:05:01 -!- corruptmemory [~jim@ool-18bbd5b2.static.optonline.net] has quit [Ping timeout: 246 seconds] 00:06:08 common_tragedian [~common_tr@weir-02.slc.edu] has joined #scheme 00:12:20 srid [~srid@unaffiliated/srid] has joined #scheme 00:12:27 -!- srid [~srid@unaffiliated/srid] has quit [Client Quit] 00:15:26 ijp [~user@host86-163-249-66.range86-163.btcentralplus.com] has joined #scheme 00:16:28 dnolen [~davidnole@184.152.69.75] has joined #scheme 00:17:12 rageous [~Adium@user-38q461p.cable.mindspring.com] has joined #scheme 00:17:31 Riastradh: I thought you were joking before :) thanks for the link with the scheme code for the 7.2 section of r5rs~ 00:17:37 s/~/!/ 00:19:14 You guys use vim? 00:19:21 zmv: emacs here 00:19:27 vim? Who would ever use vim, and why? 00:20:02 Riastradh: :o 00:21:03 Riastradh: you don't like vim? 00:25:10 Riastradh: because you're used to it :( 00:25:40 taylanub: not a real reason :| 00:25:42 Well, it should be no harder to solve that problem than it was to introduce it in the first place, taylanub...! 00:26:07 Not to mention that Emacs makes a lot more sense than vim, so it's probably easier to grow accustomed to. 00:26:15 Riastradh: Edwin? 00:26:36 What about Edwin? 00:27:24 You use GNU Emacs or Edwin? 00:27:33 I use both. 00:27:41 Edwin for Scheme and mail, and GNU Emacs for everything else. 00:28:44 i'd say it really is harder to break a habit, than to start it... 00:29:29 nilg [~user@77.70.2.229] has joined #scheme 00:29:36 i use emacs but would like to know how to use vim at least 00:29:52 noonian: vimtutor 00:30:08 noonian: start with ed :D 00:30:36 -!- tronador_ [~guille@190.66.175.221] has quit [Quit: tronador_] 00:31:09 noonian, aside from the really important command (:q!), here's what you need to know to use vi: hjkl for motion, dd to delete the line, o to open a new line, x to delete a character, i to insert, and ESC to stop inserting. That should be enough on any new system to get you (by editing /etc/dhclient.conf or whatnot) to the point that you can install Emacs. 00:31:25 lol 00:31:27 thanks everyone hehe 00:31:29 Oh, and :wq to save the file, I suppose. 00:31:54 Riastradh: why so much hatred? 00:32:53 Hatred? I don't hate vi; I just don't understand why anyone would ever use it (except out of habit inherited transitively somehow from Mr Joy). 00:33:08 (I mean, aside from setting up a new system enough to install an Emacs.) 00:33:31 its not always your system though 00:33:52 Riastradh, yes 00:33:59 Well, then you can just badger the administrator. 00:34:03 lol 00:35:04 i would think this channel is biased in favor of emacs 00:35:15 most lisp channels are. 00:35:24 *Teeko* uses vim. 00:35:39 :D 00:35:48 Or most likely vim uses me, sometimes. 00:35:55 lol 00:36:02 how? 00:36:17 Just joking, zmv. :) 00:36:22 lol 00:36:26 No, the world is biased in favour of Emacs. Only crusty Unix people who got it transitively from Bill Joy use vi. 00:36:39 >_> 00:37:11 I think OpenBSD comes with zile in the default installation! 00:37:17 vi is OK. vim is ... let's not make bad analogies: improving on something that's not meant to be improved 00:37:38 lolzile 00:37:39 no, mg 00:37:51 what's zile ? 00:37:54 mg reminds me of hg 00:37:57 taylanub: one Emacs. 00:37:58 taylanub: zile is lossy emacs 00:38:05 heh 00:38:12 Zile Is Lossy Emacs 00:38:17 Hyzer [~Hyzer@cpe-69-204-33-156.buffalo.res.rr.com] has joined #scheme 00:38:57 i see 00:40:28 what's 'begin' for ? 00:40:58 BEGIN is for several purposes, with the common theme of taking multiple things and doing them together, usually in sequence. 00:41:18 In particular, if you have n expressions, BEGIN can turn them into one expression, evaluating which will have the effects of evaluating the n expressions in order, and the value of the last expression. 00:41:32 rudybot: eval (begin (display "Hello, world!") (sqrt -1)) 00:41:32 Riastradh: your sandbox is ready 00:41:32 Riastradh: ; Value: 0+1i 00:41:40 rudybot: eval (begin (display "Hello, world!") (newline) (sqrt -1)) 00:41:40 Riastradh: ; Value: 0+1i 00:41:47 rudybot, where did your output go? 00:41:47 Riastradh: it eventually hangs apparently because the pty won't accept any more output... 00:42:01 (what the hell?) 00:42:05 lol 00:42:33 rudybot: hi pal 00:42:33 taylanub: hi. 00:42:38 an example is (if something? (begin (foo) (bar)) (baz) 00:42:41 Well, it was *supposed* to display `Hello, world!' before computing the principal square root of -1. 00:42:44 and ) 00:42:52 taylanub: BEGIN is equivalent to PROGN in CL. 00:42:59 -!- gravicappa [~gravicapp@ppp91-77-165-168.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 00:43:03 zmv: i know CL no more than Scheme ... 00:43:16 I know, just pointing out :) 00:43:28 ok 00:44:01 so isn't (begin foo bar) equivalent to (eval '(foo bar)) (ignoring this weird second argument eval expects ...) 00:44:18 No, for several reasons. 00:44:25 One is that EVAL expects a second argument. 00:44:37 Another is that BEGIN does not apply the value of the first subexpression to the value of the second subexpression. 00:44:48 Do you have a REPL handy? 00:44:56 yes, guile 2.0 00:45:10 OK. Try entering the expression I gave: (begin (display "Hello, world!") (newline) (sqrt -1)) 00:45:51 ok 00:46:04 oh, begin evals each of them... 00:46:37 Right -- left-to-right, in particular. And it discards the values yielded by every expression but the last, whose value the BEGIN expression then yields. 00:46:48 some forms like if expect a single expression and you can use begin to have more when you have side effects 00:48:10 yup. 00:49:08 can the same effect still be achieved with eval ? 00:49:14 EVAL is a red herring. 00:49:34 taylanub: If you value your sanity, you will stay away from ever using EVAL in normal programs. 00:49:46 (incf cky)) 00:49:49 i see 00:49:55 s/)// 00:49:58 Now, (eval `(BEGIN ,x ,y ,z) env) is equivalent to (begin (eval x env) (eval y env) (eval z env)). 00:50:07 evhan [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has joined #scheme 00:52:04 ive never used eval really 00:53:16 noonian: That's as it should be, unless you're writing rudybot or the like. :-) 00:53:36 If you want an expansion roughly in terms of other language constructs, (BEGIN x y) is roughly equivalent to ((LAMBDA (DUMMY THUNK) (THUNK)) x (LAMBDA () y)). 00:55:05 Very cleverly done. I was about to ask why delay the "y", then realised that because evaluation of arguments to a function is not in any guaranteed order, delaying the "y" ensures that "x" is evaluated first. 01:05:30 -!- dnolen [~davidnole@184.152.69.75] has quit [Quit: dnolen] 01:11:29 I'm looking for something like CL's macroexpand. I already understand why there isn't a macroexpand-1 that works with high level macros... I'm using chicken 01:12:05 -!- rookiejet [~mazin@dhcp-0-f-3d-bc-41-3b.cpe.quickclic.net] has quit [Quit: WeeChat 0.3.4] 01:13:45 rudybot: on what guile implementation do you run? 01:13:45 taylanub: Guile is obviously slower than Chicken, because it's only compiled to bytecode. But I don't think it's fair to categorise Guile as slow when there are languages like Python and Ruby enjoying mainstream popularity. :-P 01:14:02 rudybot runs on Racket, not Guile at all. 01:14:19 err, i'm stupid. i meant to ask 'which scheme implementation' 01:14:26 -!- mye^ [~mye@dslb-088-070-019-232.pools.arcor-ip.net] has quit [Ping timeout: 255 seconds] 01:14:28 rudybot: on what scheme implementation do you run? 01:14:28 taylanub: ok, so who told me they had another implementation of ri-emacs? 01:14:35 >_> 01:14:36 lol 01:14:39 rudybot: source? 01:14:39 Riastradh: if you're using alists as you would fields of the struct (i.e., not do things like shared tails of alists, not iterating over fields, not doing field lookup given only a symbol from some data source when a procedure couldn't be used as easily, etc.), i would probably use structs 01:14:42 well that was a hard question 01:14:53 I have forgotten how to ask rudybot where its source is. 01:14:58 offby1 probably knows. 01:15:29 rudybot: where is your source? 01:15:29 zmv: file-name-directory is a built-in function in `C source code'. 01:15:36 ... 01:15:36 -!- tauntaun [~icarus@64.134.66.112] has quit [Quit: Ex-Chat] 01:15:45 https://github.com/offby1/rudybot probably 01:15:52 probably 01:17:17 anyway, good night, or wherever you live 01:17:20 -!- taylanub [~taylanub@p4FD938E2.dip.t-dialin.net] has left #scheme 01:32:02 rudybot: version 01:32:02 fds: cd971cd 01:32:05 Heh 01:32:10 rudybot: (version) 01:32:11 fds: your sandbox is ready 01:32:11 fds: ; Value: "5.0.1" 01:32:23 hm, old racket... 01:32:27 Bah! But it is Racket 5.0.1 01:47:37 -!- Teeko [~Teeko@184.Red-83-49-132.dynamicIP.rima-tde.net] has quit [Quit: Teeko] 01:55:14 -!- davazp [~user@201.Red-88-6-204.staticIP.rima-tde.net] has quit [Remote host closed the connection] 01:57:53 -!- acarrico [~acarrico@pppoe-68-142-62-150.gmavt.net] has left #scheme 02:01:51 tauntaun [~icarus@ool-457c37c3.dyn.optonline.net] has joined #scheme 02:04:02 -!- zmv [~daniel@c934a9f5.virtua.com.br] has quit [Ping timeout: 240 seconds] 02:13:31 tronador_ [~guille@190.66.175.221] has joined #scheme 02:15:48 -!- tauntaun [~icarus@ool-457c37c3.dyn.optonline.net] has quit [Quit: Ex-Chat] 02:26:34 -!- evhan [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has quit [Quit: leaving] 02:26:49 -!- tessier [~treed@mail.copilotco.com] has quit [Changing host] 02:26:49 tessier [~treed@kernel-panic/copilotco] has joined #scheme 02:27:03 evhan [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has joined #scheme 02:27:28 phao [phao@189.118.113.151] has joined #scheme 02:28:27 -!- pjb [~t@81.202.16.46.dyn.user.ono.com] has quit [Read error: Operation timed out] 02:29:31 -!- evhan [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has quit [Client Quit] 02:30:08 -!- peterhil` [~peterhil@a91-153-112-241.elisa-laajakaista.fi] has quit [Ping timeout: 276 seconds] 02:30:30 -!- phao [phao@189.118.113.151] has quit [Client Quit] 02:31:13 Riastradh, 02:34:20 Say I have a function algorithm in C - int sigma(int m) { if (m <= 0) return 0; else return (m + (sigma(m-1)); }. Once the function hits the base case, how do I know for sure that it will return everything from each level of recursion that has taken place? 02:34:48 Actually. 02:34:49 lol 02:35:08 I need to just make that function and walk through the debugger - maybe it can help me understand. 02:36:06 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: Leaving] 02:36:08 evhan [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has joined #scheme 02:37:38 xwl_ [~user@nat/nokia/x-fecuwcaowhcrunqz] has joined #scheme 02:40:15 -!- nilg [~user@77.70.2.229] has quit [Read error: Connection reset by peer] 02:41:36 rookiejet [~mazin@dhcp-0-f-3d-bc-41-3b.cpe.quickclic.net] has joined #scheme 02:44:57 -!- rookiejet [~mazin@dhcp-0-f-3d-bc-41-3b.cpe.quickclic.net] has left #scheme 02:45:57 vu3rdd [~vu3rdd@nat/cisco/x-zncruqnpensbekqm] has joined #scheme 02:45:58 -!- vu3rdd [~vu3rdd@nat/cisco/x-zncruqnpensbekqm] has quit [Changing host] 02:45:58 vu3rdd [~vu3rdd@fsf/member/vu3rdd] has joined #scheme 02:47:27 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 02:48:02 -!- jonrafkind [~jon@jonr5.dsl.xmission.com] has quit [Ping timeout: 255 seconds] 02:53:03 DrDuck: Because each level will create a call frame. 02:53:10 DrDuck: So your function just winds up the call frames. 02:53:50 DrDuck: Of course, your function there is just recursive, not tail-recursive, but you probably knew that already. 02:57:22 I didn't, cky. 02:57:22 -!- rageous [~Adium@user-38q461p.cable.mindspring.com] has quit [Read error: Connection reset by peer] 02:57:36 A call frame, you say? 02:57:36 DrDuck: Okay, well, your function is not tail-recursive. :-) 02:57:39 rageous [~Adium@user-38q461p.cable.mindspring.com] has joined #scheme 02:57:42 -!- common_tragedian [~common_tr@weir-02.slc.edu] has quit [Remote host closed the connection] 02:57:42 -!- rageous [~Adium@user-38q461p.cable.mindspring.com] has quit [Client Quit] 02:57:45 nilg [~user@77.70.2.229] has joined #scheme 02:57:48 DrDuck: Well yeah, each level of recursion creates a call frame, when it's not tail recursion. 02:58:05 A call frame contains the arguments passed to the function, local variables, etc. 02:58:28 In the case of your sigma function you pasted above, your call frame would contain "m" and the return address. 02:58:28 Ahh. 02:58:43 (The return address specifies where your function would return after it finishes running.) 02:59:36 Here's a tail-recursive version of the same function: 02:59:48 It's sort of like taking a leap of faith, huh? 03:00:39 int sigma(int m, int total = 0) {return m < 1 ? total : sigma(m - 1, m + total);} 03:00:52 A decent compiler will actually turn that into a loop. 03:01:20 (The above is in C++, BTW, since I don't ever recall seeing default arguments in C.) 03:02:22 DrDuck: The hallmark of a tail-recursive function is that any place where it recurses, it does so at a _tail position_ only, i.e., its result is returned directly without any further action. 03:02:35 Here, we're returning sigma(m - 1, m + total) in the "else" branch. 03:02:55 No further action needs to happen to sigma's result, so there's no need to hold on to the current call frame. 03:03:24 -!- MrFahrenheit [~RageOfTho@users-151-109.vinet.ba] has quit [Ping timeout: 276 seconds] 03:03:34 Whereas, in your original version, you return m + sigma(m - 1), which means that after sigma returns, you still have to add m to the result. 03:04:29 :o 03:05:07 DrDuck: Riastradh's explanation of tail recursion was top notch. You should reread it. :-) 03:08:37 -!- Hyzer [~Hyzer@cpe-69-204-33-156.buffalo.res.rr.com] has quit [Read error: Operation timed out] 03:15:27 paulh_ [~paulh@3-12-ftth.onsnetstudenten.nl] has joined #scheme 03:24:15 -!- nilg [~user@77.70.2.229] has quit [Read error: Connection reset by peer] 03:24:16 tauntaun [~icarus@ool-457c37c3.dyn.optonline.net] has joined #scheme 03:31:48 common_tragedian [~common_tr@weir-02.slc.edu] has joined #scheme 03:34:01 pjb [~t@81.202.16.46.dyn.user.ono.com] has joined #scheme 03:36:11 -!- common_tragedian [~common_tr@weir-02.slc.edu] has quit [Remote host closed the connection] 03:41:12 annodomini [~lambda@c-65-96-220-241.hsd1.ma.comcast.net] has joined #scheme 03:41:12 -!- annodomini [~lambda@c-65-96-220-241.hsd1.ma.comcast.net] has quit [Changing host] 03:41:12 annodomini [~lambda@wikipedia/lambda] has joined #scheme 03:47:19 tronador__ [~guille@190.67.38.182] has joined #scheme 03:48:35 -!- tronador__ [~guille@190.67.38.182] has quit [Client Quit] 03:49:44 -!- tronador_ [~guille@190.66.175.221] has quit [Ping timeout: 246 seconds] 03:49:54 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Read error: Connection reset by peer] 03:50:21 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 03:52:41 timj__ [~timj@e176194197.adsl.alicedsl.de] has joined #scheme 03:56:00 -!- timj_ [~timj@e176194111.adsl.alicedsl.de] has quit [Ping timeout: 255 seconds] 04:05:24 -!- tauntaun [~icarus@ool-457c37c3.dyn.optonline.net] has quit [Quit: Ex-Chat] 04:07:19 -!- jim__ [~jim@ool-18bbd5b2.static.optonline.net] has quit [Quit: Leaving] 04:07:46 corruptmemory [~jim@ool-18bbd5b2.static.optonline.net] has joined #scheme 04:34:09 tauntaun [~icarus@ool-457c37c3.dyn.optonline.net] has joined #scheme 04:34:53 -!- myu2 [~myu2@x108121.dynamic.ppp.asahi-net.or.jp] has quit [Remote host closed the connection] 05:02:42 -!- paulh_ [~paulh@3-12-ftth.onsnetstudenten.nl] has quit [Quit: Lost terminal] 05:04:17 -!- corruptmemory [~jim@ool-18bbd5b2.static.optonline.net] has quit [Ping timeout: 246 seconds] 05:10:24 corruptmemory [~jim@ool-18bbd5b2.static.optonline.net] has joined #scheme 05:13:33 lewis1711 [~lewis@222-155-27-215.jetstream.xtra.co.nz] has joined #scheme 05:14:38 right, I think i am going to try and make a purely object orientated mini-language in scheme. uses objects for data structures like lists and vectors. 05:15:39 -!- tupi [~david@189.60.162.71] has quit [Quit: Leaving] 05:27:56 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 05:28:56 necroforest [~jarred@ip68-106-224-116.ph.ph.cox.net] has joined #scheme 05:30:27 If I have a function foo, is there any semantic difference between (foo a b c) and (apply foo a b c)? 05:31:39 That looks like a wrong use of apply. 05:32:06 Did you mean (apply foo (list a b c))? 05:32:44 necroforest: Yes, those two are different. 05:33:06 rudybot: (apply list 1 2 '(3 4 5)) 05:33:06 cky: ; Value: (1 2 3 4 5) 05:33:11 rudybot: (list 1 2 '(3 4 5)) 05:33:11 cky: ; Value: (1 2 (3 4 5)) 05:33:17 necroforest: ^^--- 05:33:35 interesting 05:34:20 yeah 05:34:22 i think i meant 05:34:39 (foo a b c) vs. (apply foo (list a b c)) 05:36:25 Those two are the same. 05:44:01 alcuadrado [~alcuadrad@host74.190-31-6.telecom.net.ar] has joined #scheme 05:44:19 what is more common for a true or false check, cond or if? 05:45:28 if 05:46:02 at least in common lisp, if i only have one branch i usually use (when) or (unless). not sure if they are standard in scheme (but easy to define with macros) 05:46:15 Indeed. 05:47:53 functions are named like "(name)" when writting about them? I mean, like f() in C-like languages 05:48:10 Right, f() => (f). 05:48:37 great 05:49:12 I'm reading the SICP, and it's cool that learning scheme makes me understand where some bit about javascript came from =) 05:52:17 where can I read more about lisp "pritty print" rules? I tryed wikipedia with no success, and the first google links seem a little complex 05:52:54 peterhil` [~peterhil@a91-153-112-241.elisa-laajakaista.fi] has joined #scheme 05:53:02 Emacs? :-) 05:53:32 alcuadrado: What fds said. Emacs. 05:53:48 i hate emacs, but it's great for lisp coding 05:53:51 great, step one into scaring him away from scheme forever 05:53:52 emacs? really? :s 05:54:01 Hmm... Emacs doesn't help for pretty-printing. It helps to indent, but not to decide where to break lines. 05:54:28 (That said, hacking Lisp in anything other than Emacs (or, for that matter, attempting to use an editor other than Emacs for any purpose) is surely an exercise in futile frustration.) 05:54:33 I don't get it. You mean learn from the auto indent of emacs? 05:54:50 Riastradh: why, again? 05:55:15 alcuadrado: No, but if you use Emacs you can stop worrying about it. 05:55:21 well, you are gonna hate me, but I'm a vim, gedit and eclipse user :P 05:55:25 and begin worrying about RSI 05:55:26 alcuadrado: You don't need to learn anything that way. 05:55:43 (Except how to use Emacs. :-D) 05:56:03 ewww, gedit 05:56:21 might as well code in notepad 05:57:01 haha, come on, gedit has colors :) haha 05:57:30 emacs seems difficult to learn, that's why I never gave it a try 05:57:33 my first CS class in college: a bunch of kids did their Pascal programs in Word. Teacher couldn't figure out why they wouldn't compile. *facepalm* 05:57:51 alcuadrado: Everything worth doing in life requires effort. 05:57:51 holly shit .s 05:58:05 my arab friend was very proud that he managed to make notepad the default editor for HUGS haskell compiler 05:58:19 yeah 05:58:23 those arabs love their notepad 05:58:30 they do? 05:58:49 i don't know. pointing out that he/she is arab seemed superfluous. 05:59:03 *he 05:59:29 it's to imagine the funny accent 05:59:56 -!- tauntaun [~icarus@ool-457c37c3.dyn.optonline.net] has quit [Ping timeout: 246 seconds] 06:00:52 but sorry mandela, next time I'll try and obfuscate the gender of the person as well *puts on floral shirt and raises clenched fist* 06:01:40 O_o 06:01:50 You're embarrassing my country. 06:02:14 Haha 06:02:42 ;( 06:02:53 if you don't find mandelas shirts funny, that's your problem1 06:08:04 rononovski [~rononovsk@bzq-79-183-184-16.red.bezeqint.net] has joined #scheme 06:09:03 -!- rononovski [~rononovsk@bzq-79-183-184-16.red.bezeqint.net] has quit [Client Quit] 06:09:12 skeptical_p [~rononovsk@bzq-79-183-184-16.red.bezeqint.net] has joined #scheme 06:12:24 I'me an idiot, but how can I run a source file with racket? Neither racket file.rkt nor raco.rkt works, and the racket man doesn't say anything about this 06:12:41 you mean from the commandline? 06:13:18 rlwrap racket -i -l errortrace -t $filename is what I use 06:13:35 I have it as a shortcut in my non-RSI inducing editor 06:15:02 Thanks :) 06:15:24 default-load-handler: expected a `module' declaration for `|1|', found: something else in: # :( 06:17:00 alcuadrado: You can use racket -r foo.rkt 06:19:07 nilg [~user@77.70.2.229] has joined #scheme 06:19:56 myu2 [~myu2@58x5x224x106.ap58.ftth.ucom.ne.jp] has joined #scheme 06:21:11 -!- alcuadrado [~alcuadrad@host74.190-31-6.telecom.net.ar] has quit [Ping timeout: 250 seconds] 06:23:28 -!- nilg [~user@77.70.2.229] has quit [Read error: Operation timed out] 06:23:31 -!- ve [~a@vortis.xen.tardis.ed.ac.uk] has quit [Read error: Operation timed out] 06:23:35 -!- oivindbi [oivindbi@lynx.stud.ntnu.no] has quit [Read error: Operation timed out] 06:23:39 -!- LeoNerd [~leo@fairy.dictatorshipcake.co.uk] has quit [Read error: Operation timed out] 06:24:46 ve [~a@vortis.xen.tardis.ed.ac.uk] has joined #scheme 06:24:49 nilg [~user@77.70.2.229] has joined #scheme 06:25:11 oivindbi [oivindbi@lynx.stud.ntnu.no] has joined #scheme 06:25:50 -!- corruptmemory [~jim@ool-18bbd5b2.static.optonline.net] has quit [Ping timeout: 246 seconds] 06:33:43 alcuadrado [~alcuadrad@host30.186-124-11.telecom.net.ar] has joined #scheme 06:42:08 christopher [~christoph@c-98-201-58-105.hsd1.tx.comcast.net] has joined #scheme 06:52:13 ski__ [~slj@c83-254-21-112.bredband.comhem.se] has joined #scheme 06:52:23 bzzbzz_ [~franco@modemcable240.34-83-70.mc.videotron.ca] has joined #scheme 06:52:24 tessier_ [~treed@mail.copilotco.com] has joined #scheme 06:52:30 ada2358 [~ada2358@login.ccs.neu.edu] has joined #scheme 06:52:38 evhan_ [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has joined #scheme 06:53:08 bremner [~bremner@yantan.tethera.net] has joined #scheme 06:54:14 rononovski_ [~rononovsk@bzq-79-183-184-16.red.bezeqint.net] has joined #scheme 06:55:00 -!- skeptical_p [~rononovsk@bzq-79-183-184-16.red.bezeqint.net] has quit [*.net *.split] 06:55:00 -!- evhan [~evhan@76-250-39-229.lightspeed.mdsnwi.sbcglobal.net] has quit [*.net *.split] 06:55:00 -!- tessier [~treed@kernel-panic/copilotco] has quit [*.net *.split] 06:55:00 -!- ada2358_ [~ada2358@login.ccs.neu.edu] has quit [*.net *.split] 06:55:00 -!- tmi [~tmi@138.n0.bofiber.no] has quit [*.net *.split] 06:55:01 -!- micro [~micro@www.bway.net] has quit [*.net *.split] 06:55:01 -!- joast [~rick@76.178.178.72] has quit [*.net *.split] 06:55:01 -!- ski [~slj@c83-254-21-112.bredband.comhem.se] has quit [*.net *.split] 06:55:02 -!- bremner_ [~bremner@yantan.tethera.net] has quit [*.net *.split] 06:55:02 -!- minion [~minion@common-lisp.net] has quit [*.net *.split] 06:55:02 -!- bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [*.net *.split] 06:57:55 joast [~rick@76.178.178.72] has joined #scheme 06:58:01 Gmind [~Nevermind@113.190.190.127] has joined #scheme 06:59:32 ruiqilee [~ruiqilee@27.19.249.80] has joined #scheme 06:59:36 -!- blueadept [~blueadept@unaffiliated/blueadept] has quit [Quit: Leaving] 07:00:12 tmi [~tmi@138.n0.bofiber.no] has joined #scheme 07:00:48 jewel [~jewel@196-215-16-243.dynamic.isadsl.co.za] has joined #scheme 07:02:36 I lost my connection earlier,but was about asking if anyone knowed how to run the current editting file from vim with racket :) 07:05:14 knew 07:08:32 -!- jewel [~jewel@196-215-16-243.dynamic.isadsl.co.za] has quit [Ping timeout: 246 seconds] 07:08:40 christopher_ [~christoph@c-98-201-58-105.hsd1.tx.comcast.net] has joined #scheme 07:11:46 -!- DrDuck [~duck@75-138-8-128.dhcp.mtgm.al.charter.com] has quit [Ping timeout: 260 seconds] 07:12:23 -!- christopher [~christoph@c-98-201-58-105.hsd1.tx.comcast.net] has quit [Ping timeout: 246 seconds] 07:14:05 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Read error: Operation timed out] 07:14:38 any racket user in here? 07:16:43 alcuadrado: I use it on occasion, but I'm no expert by any means. 07:17:29 I just can't run files from command line :s I get an error about modules, but don't find anything in google from that error message 07:17:48 Did you try "racket -r"? 07:19:11 alcuadrado: didn't my line work? it's in my .vimrc and I used to use it a lot 07:19:26 -!- bzzbzz_ [~franco@modemcable240.34-83-70.mc.videotron.ca] has quit [Quit: leaving] 07:20:00 that gave me the error 07:20:24 bzzbzz [~franco@modemcable240.34-83-70.mc.videotron.ca] has joined #scheme 07:20:26 with -r I can make it run, but no there's no output of what's interpreted 07:20:59 *nods* 07:21:19 and the racket interactive mode sucks, if you have a typo you can't use the cursors, you must delete and rewrite 07:21:48 -!- necroforest [~jarred@ip68-106-224-116.ph.ph.cox.net] has quit [Quit: necroforest] 07:22:13 alcuadrado: That is easily remedied. 07:22:16 *fds* won't mention that you could run it in Emacs 07:22:21 :-P 07:22:35 commandline options must have changed 07:22:38 or you're doing it wrong 07:22:44 how cky ? 07:23:30 au BufRead,BufNewFile *.rkt nmap :!rlwrap racket -i -l errortrace -t % "last I checked that ran it and dropped you to the interpreter afterwards. 07:23:39 when you press f5 :) 07:24:09 alcuadrado: (require readline) (install-readline!) 07:24:26 After that, you will have readline available. 07:25:47 that fails for me lewis1711 :( 07:26:01 let me check that cky :) 07:26:11 alcuadrado: That's because lewis1711 is using a heretic text editor. 07:26:13 adu [~ajr@softbank220043138128.bbtec.net] has joined #scheme 07:26:27 but his fingers are still so supple 07:27:20 readline support is enough to keep with the books exercises :) thanks 07:27:25 alcuadrado: My pleasure! 07:27:35 is there anything like .racketrc? 07:27:49 alcuadrado: Yes. 07:27:59 alcuadrado: In fact, (install-readline!) edits .racketrc for you. 07:28:17 (At least for Racket 5.1; can't comment on earlier versions.) 07:30:09 it doesn't work if you don't have a previous .racketrc, fixed now :) 07:31:18 :-D 07:34:07 life is much better with readline :) haha 07:35:12 \o/ 07:36:36 now, is there a way to highlight matching brackets? haha 07:36:50 -!- ruiqilee [~ruiqilee@27.19.249.80] has quit [Ping timeout: 240 seconds] 07:37:48 mye^ [~mye@dslb-088-070-021-158.pools.arcor-ip.net] has joined #scheme 07:38:46 alcuadrado: Readline has that support, if you edit ~/.inputrc appropriately. 07:41:40 it's a little strange, but cool for closing long list of parens 07:42:21 Indeed. 07:44:21 alcuadrado: Put this line in your ~/.inputrc: 07:44:25 set blink-matching-paren on 07:44:35 yes, I did that 07:44:40 Perfect. :-) 07:44:48 I mean it was strange to use it 07:45:02 because your cursors seems to go crazy haha 07:45:13 ^mye^ [~mye@dslb-088-070-021-158.pools.arcor-ip.net] has joined #scheme 07:46:50 Gmind1 [~Nevermind@113.190.190.127] has joined #scheme 07:46:53 -!- joast [~rick@76.178.178.72] has quit [Ping timeout: 252 seconds] 07:47:04 joast [~rick@76.178.178.72] has joined #scheme 07:47:39 Hehehehe. 07:48:13 -!- mye^ [~mye@dslb-088-070-021-158.pools.arcor-ip.net] has quit [Ping timeout: 252 seconds] 07:48:13 -!- Gmind [~Nevermind@113.190.190.127] has quit [Ping timeout: 252 seconds] 07:49:45 nilg` [~user@77.70.2.229] has joined #scheme 07:51:24 hkBst [~quassel@gentoo/developer/hkbst] has joined #scheme 07:52:17 -!- alcuadrado [~alcuadrad@host30.186-124-11.telecom.net.ar] has quit [Ping timeout: 246 seconds] 07:55:29 -!- ^mye^ [~mye@dslb-088-070-021-158.pools.arcor-ip.net] has quit [Quit: Leaving] 08:03:47 f8l [~f8l@87-205-239-131.adsl.inetia.pl] has joined #scheme 08:04:05 mye [~mye@dslb-088-070-021-158.pools.arcor-ip.net] has joined #scheme 08:05:04 alcuadrado [~alcuadrad@host118.190-138-36.telecom.net.ar] has joined #scheme 08:06:50 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 08:10:56 gravicappa [~gravicapp@ppp91-77-165-168.pppoe.mtu-net.ru] has joined #scheme 08:14:20 -!- mye [~mye@dslb-088-070-021-158.pools.arcor-ip.net] has quit [Read error: Connection reset by peer] 08:21:28 how do you name variables in Scheme? camelCase? CompleteCase? altogether? underscore_separeted? dash-separeted? 08:21:54 it seems that procedures are name dash-separeted, at least in the SICP 08:24:05 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 08:40:14 dash-separated is the near universal custom for scheme and other lisps 08:41:06 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Read error: Connection reset by peer] 08:41:35 also for variable names? 08:41:48 for all names 08:41:55 ok, thanks :) 08:43:17 -!- xwl_ [~user@nat/nokia/x-fecuwcaowhcrunqz] has quit [Remote host closed the connection] 08:44:49 unlike mark_weaver's nick 08:45:03 btw, I was lurking on your conversation earlier, getting readline configured to work for you. I just wanted to say that it will be well worth your effort to learn emacs. vim is not a very friendly environment for scheme or lisps. 08:45:30 (speaking as someone who uses both emacs and vim regularly, and know them both well) 08:45:46 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Quit: Leaving] 08:46:38 femtoo [~femto@95-89-198-8-dynip.superkabel.de] has joined #scheme 08:46:46 foof: heh 08:48:16 bharath_g [~bharath10@117.211.88.150] has joined #scheme 08:50:04 I'll give it a try 08:50:12 thanks for your advice 08:50:54 what seems strange from emacs is that running "emacs" in the terminal opens a new windows :s I thought it had a curses interface or something like that 08:52:38 alcuadrado: emacs -nw 08:52:53 thanks :) 08:53:19 (the opposite of vim -g) 08:53:36 and what makes it so special for lisp users? 08:53:45 hype 08:53:52 years and years of accumulated hype 08:54:37 the main reason I haven't seriously tried to learn common lisp. that and #lisp in general. 08:55:36 is common lisp more widely used that scheme? 08:55:54 I've heard much more times about scheme 08:56:07 yeah, it is 08:58:26 something I just find out which seems cool is that the accumulation of parens almost force you to decompose big function and make them more functional cohesive :) 08:58:53 it just makes me press enter more. 08:59:10 do you have matching brackets highlighted? 08:59:18 saves you counting them 08:59:44 I'm currently coding in gedit and pasting in the intepreter, so yes haha 09:05:32 -!- lewis1711 [~lewis@222-155-27-215.jetstream.xtra.co.nz] has left #scheme 09:07:45 fantazo [~fantazo@178-190-233-132.adsl.highway.telekom.at] has joined #scheme 09:12:15 ruiqilee [~ruiqilee@27.19.249.80] has joined #scheme 09:12:52 -!- ruiqilee [~ruiqilee@27.19.249.80] has quit [Remote host closed the connection] 09:16:54 curious, ohloh counts about 10M code lines of scheme and lisp from various repositories, and ~20M of emacs lisp 09:16:58 -!- aoh_ is now known as aoh 09:24:02 that language comparator is pretty cool 09:24:13 look at this graph http://www.ohloh.net/languages/compare?measure=commits&percent=&l0=scheme&l1=lisp&l2=emacslisp&l3=-1&l4=-1&commit=Update 09:24:13 http://tinyurl.com/4w97vp8 09:24:28 Emacs lisp use to be MUCH more used 09:27:57 xwl_ [~user@nat/nokia/x-rmqaelcclpzmytab] has joined #scheme 09:30:39 LeoNerd [~leo@fairy.dictatorshipcake.co.uk] has joined #scheme 09:32:43 -!- noonian [~noonian@c-76-105-129-255.hsd1.or.comcast.net] has quit [Ping timeout: 248 seconds] 09:52:26 -!- xwl_ [~user@nat/nokia/x-rmqaelcclpzmytab] has quit [Ping timeout: 246 seconds] 09:53:14 -!- mark_weaver [~mhw@ip68-9-118-38.ri.ri.cox.net] has quit [Ping timeout: 240 seconds] 09:56:19 when I do something like this http://paste.ofcode.org/G6zFzCATBqGNeQFyukMFd3 - are the procedures like (improve) created every time (sqrt) is called? 09:57:09 improve is a different procedure each time. 09:57:53 (Clearly, it wouldn't make sense otherwise.) 09:57:54 it must be created, since it has to capture `x' from sqrt. 09:58:43 right 09:58:58 scheme and javascript have lot in common :P 09:59:33 mark_weaver [~mhw@ip68-9-118-38.ri.ri.cox.net] has joined #scheme 10:00:14 fantazo_ [~fantazo@178-191-162-47.adsl.highway.telekom.at] has joined #scheme 10:01:25 -!- ijp [~user@host86-163-249-66.range86-163.btcentralplus.com] has quit [Ping timeout: 255 seconds] 10:01:29 -!- f8l [~f8l@87-205-239-131.adsl.inetia.pl] has quit [Quit: WeeChat 0.3.4] 10:02:41 -!- fantazo [~fantazo@178-190-233-132.adsl.highway.telekom.at] has quit [Ping timeout: 260 seconds] 10:02:57 Heh.. it's just a closure... :P 10:03:00 A lot of languages have those 10:03:46 femtooo [~femto@95-89-198-8-dynip.superkabel.de] has joined #scheme 10:03:46 yeah, I see, they are really common in javascript too 10:04:09 but as the SICP explained it as a special form called "block structure" it made me doubt 10:04:49 I use them quite a lot in Perl.. 10:05:06 is it common to define functions with their helper functions as nested closures like that? 10:05:13 taylanub [~taylanub@p4FD963D1.dip.t-dialin.net] has joined #scheme 10:06:30 alcuadrado, quite common 10:06:37 I guess it varies with language. I don't really do Scheme, I popped in here mostly to ask a question about macros. :) But I use them loooads in Perl.. Prettymuch essential for async. and event handling 10:06:41 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has quit [Ping timeout: 246 seconds] 10:06:42 using letrec or (let loop ...) does effectively the same 10:07:40 well, i'll have to read about those, I'm just starting the SICP :P 10:09:32 it's not like you're re-compiling them though, the runtime usually just saves the code pointer and necessary environment, so it costs something like 3 memory writes + incrementing an allocation pointer to create a closure, and a few more to free it eventually 10:09:50 it takes time to get used to not worry about those things too much :) 10:09:53 -!- myu2 [~myu2@58x5x224x106.ap58.ftth.ucom.ne.jp] has quit [Remote host closed the connection] 10:10:17 I warry more about them in javascript than in scheme :P 10:10:18 Heh... closures in -my- scheme are relatively expensive, but that's largely because most things are... 10:10:18 some compilers can also make transformations that remove the need for the closure in some places, for example by passing the x as an arugment 10:10:19 wingo [~wingo@90.164.198.39] has joined #scheme 10:10:29 I wrote myself a little toy Scheme on Perl.. :) 10:10:51 in perl? :| 10:10:52 Turns out to be really quite easy because you get most things for free, like closures and tail-recursion 10:11:14 Ya.. I started off writing a clone of Lispy, only much more complete 10:11:34 LeoNerd, cool. the best way to learn scheme :) 10:11:36 Lispy uses Python arrays for Scheme lists, which means they dno't work right, and also doesn't have strings. Mine has strings, pairs, lists as pairs, etc.. 10:11:47 About the the only thing missing now is macros 10:12:00 And that's mostly because I still dno't -quite- get how to do the crazy ... ellipsis things 10:13:46 LeoNerd, you can make the basic matcher and then add the ellipsis separately by adding a few more cases 10:14:05 Ya.. well... it's more that I dno't -quite- understand them... 10:14:13 Mostly the way that they can restructure things 10:14:30 Like, if you can match (var init) ... and later expand it into (var ...) and (init ...) 10:14:45 (e.g. in the 'let' case) 10:15:59 those are a bit tricky 10:16:36 in matching it's fairly easy, you just keep matching against the pattern before ellipsis, and save the bindings to some environment 10:16:38 I -think- I have a plan on how to do it.. 10:16:51 It mostly comes from the observation that I read, that you can treat ... as a postfix operator on a pattern 10:17:39 yep, it kind of does what * does in regexps 10:17:56 Matching isn't too hard.. it's working out how to distribute the contents again afterwards 10:18:35 I -think- my plan is to match using a special environment-like data structure, that remembers the nesting level of things; so (a (b c ...) ...) would have a=0, b=1, c=2 10:18:52 Having matched that, you know how many levels to unpack again when expanding the template 10:20:46 Actually I think the first real bit of nontrivial implemetnation, will be when I get aroudn to doing call/cc + dynamic-wind. 10:20:46 -!- alcuadrado [~alcuadrad@host118.190-138-36.telecom.net.ar] has quit [Ping timeout: 246 seconds] 10:20:53 I can't think of an easy perl analogy to those.. :/ 10:22:18 unless you use cps, call/cc always involves copying enough of the interpreter state to be able to resume it later 10:22:39 Well... my interpreter loop is basically a while loop already... 10:23:00 It currently recurses onto itself to eval e.g. the non-tail positions in begin or lambda, or to evaluate arguments to function calls.. 10:24:00 I suspect if I shuffle it around some more, I can basically use the same trickery that Perl uses to implemet its runloop on C 10:26:11 so you are using a recursive evaluation function to operate on the sexps? 10:26:11 The Perl interpreter is a big while loop, holding all the VM state in a big structure.. it has arrays for function activiation frames, basically.. So calling/returning from a function is just an adjustment of that array. 10:26:34 I'm thinking instead if I turn that into a linked list structure, I can just store the continuation somewhere and come back to it later, since the "callstack" won't be linear any more 10:26:38 Yah 10:27:14 in that case you probably have to get a deep copy of the sexp (+ any other current state) and save it to a value 10:27:39 I suspect it'll be doable with a linkedlist of activation frames.. 10:27:51 On the idea that I can fork the tree for call/cc stuff 10:27:51 if you go vm, yes 10:29:25 might be worth having a look at the SECD-machine, or some of it's more modern relatives 10:29:33 http://paste.scsys.co.uk/91256 <== my main eval() loop, currently 10:31:39 -!- muks_ [~muks@misha.banu.com] has quit [Quit: leaving] 10:31:47 (oh actually that's not -quite- the latest, but close enough :) ) 10:34:50 seems nice 10:35:18 It's mostly a clone of Norvig's Lispy, to start with... but updated to a more reasonable coverage of Scheme (pairs, strings, etc..) 10:35:20 would probably require some quite some perl-monkery to get a call/cc in there conveniently :/ 10:35:50 Yah; hence my thinking for stackframes, and disconnecting the Scheme stack from the Perl stack, much the same way that Perl disconnects its from C 10:36:31 Perl can do coroutines and other crazythings, but it's not part of the core language... E.g. the Coro module works by cloning the entire "callstack" array, because it wasn't expecting to support that. I'm thinking if I use a linkedlist approach it won't need that cloning 10:37:23 muks [~muks@misha.banu.com] has joined #scheme 10:38:00 many more native schemes also avoid using the C-stack for the same reason 10:38:16 It seems sensible 10:38:33 Unless you want to start playing makecontext()+swapcontext() games. :) 10:40:47 Anyway, that's for later. Macros first. 10:41:30 I wonder, is there a useful source of implementations of the standard R5RS "library functions", as macros..? That'd be useful for me here I think.. Was hoping I'd just drop it in the source and string-eval it at construction time. 10:42:29 -!- gravicappa [~gravicapp@ppp91-77-165-168.pppoe.mtu-net.ru] has quit [Ping timeout: 250 seconds] 10:43:17 most schemes probably have their own preludes, could copy form one? 10:43:43 gravicappa [~gravicapp@ppp91-77-218-92.pppoe.mtu-net.ru] has joined #scheme 10:43:56 Hmm.. possibly.. Shall have to check licencing etc... Any particularly nice/good/complete ones you might recommend? 10:44:10 Prelude is a good word though, shall have to keep that in mind. :) 10:45:05 my initial macros are at http://code.google.com/p/owl-lisp/source/browse/trunk/repl.scm#1361, though some differ a bit from scheme 10:46:02 Heh.. wait... quasiquote can be done as a macro? 10:46:56 LeoNerd, sure, it's a combination of append, list* and list. 10:50:12 Hmmm 10:51:33 Oh, I see this doesn't have the splicing one.. but I guess that isn't that hard to add 10:53:20 always forget to add that, as i've never had use for it :) 10:53:27 Ah.. 10:55:23 aoh, you could inline true and false in if. 10:57:01 DT-sama, true 10:57:52 like many optimizations, that could also be handled by a (currently missing) partial evaluator 10:58:07 -!- fantazo_ [~fantazo@178-191-162-47.adsl.highway.telekom.at] has quit [Ping timeout: 255 seconds] 10:58:56 -!- vu3rdd [~vu3rdd@fsf/member/vu3rdd] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 11:05:14 -!- Gmind1 [~Nevermind@113.190.190.127] has quit [Quit: Leaving.] 11:07:07 -!- wingo [~wingo@90.164.198.39] has quit [Ping timeout: 248 seconds] 11:07:38 -!- homie [~levgue@xdsl-78-35-139-66.netcologne.de] has quit [Read error: Connection reset by peer] 11:09:07 homie [~levgue@xdsl-78-35-183-236.netcologne.de] has joined #scheme 11:13:38 fantazo [~fantazo@178-191-162-47.adsl.highway.telekom.at] has joined #scheme 11:46:40 micro [~micro@www.bway.net] has joined #scheme 11:50:18 myu2 [~myu2@x108121.dynamic.ppp.asahi-net.or.jp] has joined #scheme 12:04:08 -!- nilg [~user@77.70.2.229] has quit [Remote host closed the connection] 12:04:55 nilg [~user@77.70.2.229] has joined #scheme 12:08:27 masm [~masm@bl16-182-101.dsl.telepac.pt] has joined #scheme 12:09:12 hiyuh [~hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 12:13:42 -!- mark_weaver [~mhw@ip68-9-118-38.ri.ri.cox.net] has left #scheme 12:15:03 -!- vk0 [~vk@ip-23-75.bnaa.dk] has quit [Read error: Operation timed out] 12:18:55 vk0 [~vk@ip-23-75.bnaa.dk] has joined #scheme 12:20:23 jake__ [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 12:27:04 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Quit: Bye] 12:27:34 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 12:30:00 -!- jake__ is now known as jblz 12:30:28 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 12:36:14 -!- jblz [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has quit [Quit: Leaving] 12:36:47 -!- amoe [~amoe@cpc1-brig13-0-0-cust658.3-3.cable.virginmedia.com] has quit [Read error: Operation timed out] 12:36:54 jake__ [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 12:37:00 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 12:37:08 -!- jake__ [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has quit [Remote host closed the connection] 12:37:39 jake__ [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 12:38:44 jblz [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 12:38:51 -!- jake__ [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has quit [Client Quit] 12:38:54 -!- jblz [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has quit [Read error: Connection reset by peer] 12:39:13 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Read error: Connection reset by peer] 12:39:24 jblz [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 12:43:52 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Ping timeout: 255 seconds] 12:46:35 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 12:48:38 -!- nilg` [~user@77.70.2.229] has quit [Remote host closed the connection] 12:50:17 -!- DT-sama is now known as DT`` 12:51:29 how can you 'dereference' a symbol ? 12:51:30 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 12:51:37 -!- lithpr [~user@cpe-204-210-208-155.neo.res.rr.com] has quit [Remote host closed the connection] 12:51:38 -!- jblz [~lithpr@cpe-204-210-208-155.neo.res.rr.com] has quit [Remote host closed the connection] 12:52:01 taylanub, what do you mean? 12:52:04 jblz [~jake@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 12:52:16 ( (lambda (n) (set! n foo)) 'bar) this doesn't work 12:52:41 you want call-by-reference? 12:52:48 you can use a box. 12:53:11 a box? 12:53:13 oh wait, this is #scheme. 12:53:30 taylanub, you can get cbr with some macro hackery. 12:53:44 wait a sec. 12:53:50 sounds overkill for this purpose... 12:55:11 Teeko [~Teeko@184.Red-83-49-132.dynamicIP.rima-tde.net] has joined #scheme 12:56:47 -!- timj__ [~timj@e176194197.adsl.alicedsl.de] has quit [Ping timeout: 246 seconds] 12:57:34 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Quit: Bye] 12:58:59 -!- jblz [~jake@cpe-204-210-208-155.neo.res.rr.com] has quit [Remote host closed the connection] 12:59:28 jblz [~jake@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 13:01:03 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 13:01:05 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 13:04:26 taylanub, there's no other standard way. 13:05:02 weird. maybe it's something you wouldn't normally need in the scheme way of programming ? 13:05:40 kuribas [~user@dD57635B6.access.telenet.be] has joined #scheme 13:05:47 in Scheme you usually don't (set!). 13:06:08 you tend to think functionally. 13:06:43 well the set! was just part of the example 13:06:58 lithpr [~user@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 13:09:04 taylanub: what is the example meant to do? 13:09:05 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Quit: Bye] 13:09:07 Generally, Scheme suggests a functional style of thinking 13:09:18 LeoNerd: a linked-list stack is usually called a spaghetti stack 13:09:22 So generally you dno't need to pass by reference, a storage box, because usually you only care about its value 13:09:37 sloyd_: Ah.. hmmm.... Is that meant as a good thing? :) 13:09:37 bremner: (set! bar foo) 13:10:00 LeoNerd: i see 13:10:14 'foo is somewhat like &foo in C, am i right ? 13:10:19 Nope 13:10:20 adu [~ajr@softbank220043139062.bbtec.net] has joined #scheme 13:10:30 'foo is more like 1, or 2. 13:10:32 or 3. 13:10:34 'foo is simply quoted... It's something that doesn't have a direct C-like analogy 13:10:44 it's a simple value. 13:10:55 (+ 1 2 3) evaluates to 6, whereas '(+ 1 2 3) evaluates to the 4-element list containing the + symbol and those 3 numbers; (+ 1 2 3) 13:11:20 It's a way of saying "treat this part of the program as its literal value, don't try to evaluate it as a function call" 13:17:16 LeoNerd: yes, it is a very good thing. The more so nowadays with multicores. http://en.wikipedia.org/wiki/Functional_programming 13:17:43 taylanub, that was like saying void foo(void *n) {n = sym_foo;} foo(sym_bar); 13:18:40 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 13:19:45 is there an equivalent of &foo ? 13:21:13 macro hackery. 13:21:48 if you do ((lambda (n) (set-car! n 42)) (cons null null)), it works like void foo(void *n){ASSERT(pairp(n)); n[1] = fixnum(42);}; foo(alloc_pair(NULL, NULL)) 13:22:01 or you just pass a getter and setter to the procedure. 13:22:29 aoh, that works for conses, but not for vectors or symbols. 13:23:42 -!- augiedoggie [~cpr@unaffiliated/cpr420] has quit [Ping timeout: 252 seconds] 13:24:10 augiedoggie [~cpr@unaffiliated/cpr420] has joined #scheme 13:24:59 taylanub: what's the problem you are trying to solve? 13:25:09 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 13:28:15 C-Keen: lack of possessed knowledge 13:32:47 taylanub, reading sicp or htdp will solve that problem. 13:42:29 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 13:51:07 dnolen [~davidnole@184.152.69.75] has joined #scheme 13:53:13 taylanub: there is an equivalent to C & in lisp/scheme. It's called a closure. 13:53:37 pjb: that is an unusual notion of equivalent 13:54:37 (define x 0) (define set-x! (lambda (new-x) (set! x new-x))) <== set-x! is roughly like "the address of" x 13:54:52 In that you can store to it (set-x! 1) somewhat like xptr[0] = 1; 13:55:35 See for example http://groups.google.com/group/comp.lang.lisp/msg/d141c5636559ba3b?hl=en 13:56:28 also http://okmij.org/ftp/c++-digest/index.html#pointer-closure 14:00:23 kauwgom [~reid@pool-173-53-248-17.chi01.dsl-w.verizon.net] has joined #scheme 14:00:44 xwl [~user@222.130.116.94] has joined #scheme 14:04:11 -!- _reid [~reid@pool-71-186-127-197.chi01.dsl-w.verizon.net] has quit [Ping timeout: 248 seconds] 14:07:24 rudybot: (define (inc x) (set-box! x (+ (unbox x) 1))) 14:07:24 Teeko: your sandbox is ready 14:07:24 Teeko: Done. 14:07:44 rudybot: (let ((v (box 0))) (inc v) (unbox v)) 14:07:44 Teeko: ; Value: 1 14:07:59 Oooh.. the bot remembers definitions in later lines? 14:08:25 Boxes are not provided in many scheme implementations though... 14:09:06 Certainly not mine. ;) 14:09:16 .oO( Though I coooould easily implement them as scalar refs ) 14:11:20 -!- gravicappa [~gravicapp@ppp91-77-218-92.pppoe.mtu-net.ru] has quit [Ping timeout: 246 seconds] 14:14:12 so i ended up getting 92 on the scheme final ;p 14:14:27 DrDuck [~duck@75-138-8-128.dhcp.mtgm.al.charter.com] has joined #scheme 14:14:38 Caleb--: 'grats! 14:14:45 -!- xwl [~user@222.130.116.94] has quit [Remote host closed the connection] 14:15:05 thanks 14:15:59 the most points they took off was on an exercises where we were given some function and had to draw the environment model describing the execution and the result 14:16:12 i should've been more careful there :S 14:16:16 sec, i'll show you 14:18:31 btw paste.list.org/new/scheme doesn't seem to work 14:20:08 http://paste.lisp.org/display/120281 14:20:09 this 14:20:10 *lisp.org 14:20:38 the asked for the output of the LAST command, and to draw the env model of the execution 14:20:44 i gave (2 1 3 4) as the answer 14:20:50 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Remote host closed the connection] 14:22:58 Okay, so what's wrong with that? 14:23:43 i dunno, it seemed correct to me, but DrScheme prints (1 3 4) 14:25:02 oh 14:25:04 that's right 14:25:09 you can't change lst itself 14:25:17 it still points to the 1st element 14:25:20 -!- Teeko [~Teeko@184.Red-83-49-132.dynamicIP.rima-tde.net] has quit [Ping timeout: 246 seconds] 14:25:23 bbl food 14:25:39 -!- lithpr [~user@cpe-204-210-208-155.neo.res.rr.com] has quit [Remote host closed the connection] 14:26:06 lithpr [~user@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 14:26:39 gravicappa [~gravicapp@ppp91-77-161-13.pppoe.mtu-net.ru] has joined #scheme 14:28:38 Hahahahaha. 14:29:21 change! returns the new lst value, but, the calling code discards it. 14:29:24 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Quit: Computer has gone to sleep.] 14:29:25 That's where the red herring is. 14:29:49 those bastards :( 14:32:19 Yeah. :-( 14:33:13 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 14:33:59 *sloyd_* waits for eli to step in and denounce SICP inspired courses with trick questions and set-cdr! 14:34:53 He. 14:35:04 Hehehe, even. 14:39:03 lbc [~quassel@1908ds1-aboes.0.fullrate.dk] has joined #scheme 14:48:01 -!- DrDuck [~duck@75-138-8-128.dhcp.mtgm.al.charter.com] has quit [Quit: Leaving] 14:48:03 what do people mean when they say "red herring"? 14:48:51 wikipedia knows it all: http://en.wikipedia.org/wiki/Red_herring 14:51:08 ok followed this now :) 14:56:41 -!- dnolen [~davidnole@184.152.69.75] has quit [Quit: dnolen] 14:57:58 rageous [~Adium@user-38q461p.cable.mindspring.com] has joined #scheme 14:58:35 nilg` [~user@77.70.2.229] has joined #scheme 14:59:58 sloyd_: Seems that whoever wrote that exam did a fine job denouncing it. 15:00:50 btw, note how quickly it took me to realize the problem 15:01:10 the reason i didn't in the test was that i was too busy "following" the code and drawing the fucking diagrams to lift up my head and think 15:01:32 all the lets had to be turned into lambdas 15:02:06 Caleb--: What I mean is that that question is a short summary of why this kind of mutation is bad. 15:02:27 i see 15:02:42 (And for sloyd_'s reference -- if you were doing a "real" 6.001 course, you'd suffer from it *much* more, for about zero educational gain.) 15:04:43 Gmind [~Nevermind@113.190.192.10] has joined #scheme 15:06:08 thank zeus i'm not, then. 15:06:48 -!- evhan_ is now known as evhan 15:13:39 necroforest [~jarred@ip68-106-224-116.ph.ph.cox.net] has joined #scheme 15:17:18 aisa [~aisa@173-10-243-253-Albuquerque.hfc.comcastbusiness.net] has joined #scheme 15:29:02 -!- gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Ping timeout: 246 seconds] 15:34:38 -!- samth_away is now known as samth 15:36:43 gnomon [~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 15:37:24 pbusser [~peter@ip138-238-174-82.adsl2.static.versatel.nl] has joined #scheme 15:37:30 Moin moin! 15:39:20 konnichiwa 15:44:57 common_tragedian [~common_tr@weir-02.slc.edu] has joined #scheme 15:45:31 -!- common_tragedian [~common_tr@weir-02.slc.edu] has quit [Remote host closed the connection] 15:45:46 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 15:45:46 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 15:45:47 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 15:46:58 vu3rdd [~vu3rdd@122.167.101.189] has joined #scheme 15:46:59 -!- vu3rdd [~vu3rdd@122.167.101.189] has quit [Changing host] 15:46:59 vu3rdd [~vu3rdd@fsf/member/vu3rdd] has joined #scheme 15:47:38 -!- vk0 [~vk@ip-23-75.bnaa.dk] has quit [Ping timeout: 240 seconds] 15:47:49 langmartin [~user@exeuntcha2.tva.gov] has joined #scheme 15:50:11 -!- christopher_ [~christoph@c-98-201-58-105.hsd1.tx.comcast.net] has quit [Ping timeout: 255 seconds] 15:51:49 vrajmohan [~vrajmohan@64.55.31.190] has joined #scheme 15:52:01 -!- necroforest [~jarred@ip68-106-224-116.ph.ph.cox.net] has quit [Quit: necroforest] 15:52:29 -!- nilg` [~user@77.70.2.229] has quit [Ping timeout: 246 seconds] 15:56:17 vk0 [~vk@ip-23-75.bnaa.dk] has joined #scheme 16:11:45 charlietanksley [~charlieta@adsl-71-172-201.gsp.bellsouth.net] has joined #scheme 16:21:07 christopher_ [~christoph@66.202.158.22] has joined #scheme 16:23:55 kilimanjaro [~kilimanja@ip24-255-34-109.tc.ph.cox.net] has joined #scheme 16:23:58 -!- kilimanjaro [~kilimanja@ip24-255-34-109.tc.ph.cox.net] has quit [Changing host] 16:23:59 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 16:25:55 -!- rageous [~Adium@user-38q461p.cable.mindspring.com] has left #scheme 16:32:46 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 16:37:14 pdlogan [~patrick@75-175-5-194.ptld.qwest.net] has joined #scheme 16:38:50 -!- masm [~masm@bl16-182-101.dsl.telepac.pt] has quit [Ping timeout: 240 seconds] 16:38:58 common_tragedian [~common_tr@weir-02.slc.edu] has joined #scheme 16:40:32 -!- christopher_ [~christoph@66.202.158.22] has quit [Remote host closed the connection] 16:41:32 christopher [~christoph@66.202.158.22] has joined #scheme 16:44:24 tauntaun [~icarus@ool-44c7e46c.dyn.optonline.net] has joined #scheme 16:45:27 -!- common_tragedian [~common_tr@weir-02.slc.edu] has quit [Remote host closed the connection] 16:46:59 rageous [~Adium@user-38q461p.cable.mindspring.com] has joined #scheme 16:47:17 masm [~masm@bl16-182-101.dsl.telepac.pt] has joined #scheme 16:48:40 -!- Nisstyre [~nisstyre@infocalypse-net.info] has quit [Remote host closed the connection] 16:51:01 nixness [~dsc@78.100.186.63] has joined #scheme 16:51:09 -!- rageous [~Adium@user-38q461p.cable.mindspring.com] has quit [Client Quit] 16:52:56 stamourv [~user@ahuntsic.ccs.neu.edu] has joined #scheme 16:53:02 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 264 seconds] 16:53:11 -!- foocraft [~dsc@78.100.210.180] has quit [Ping timeout: 255 seconds] 16:54:36 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 16:54:36 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 16:54:36 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 16:55:25 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Read error: Operation timed out] 16:59:31 -!- dfeuer_ [~dfeuer@pool-71-178-171-30.washdc.fios.verizon.net] has quit [Read error: Connection reset by peer] 17:04:04 jonrafkind [~jon@crystalis.cs.utah.edu] has joined #scheme 17:05:34 -!- githogori [~githogori@adsl-66-123-22-146.dsl.snfc21.pacbell.net] has quit [Remote host closed the connection] 17:08:43 -!- hiyuh [~hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has quit [Quit: Leaving.] 17:08:52 is there anything special to javascript, or would it be possible to get the same performance from scheme ? scheme replacing JS ... one can dream! 17:09:30 it wouldn't be possible to get the same performace. scheme would be much faster :P 17:09:40 actually, I think scheme is much more optimizeable than js. 17:09:46 but the masses don't like the parentheses 17:09:53 but nobody would like it because ``omg parentheses'' 17:09:57 *of 17:10:45 DT``: could you agree with me more?? :P 17:12:26 -!- masm [~masm@bl16-182-101.dsl.telepac.pt] has quit [Ping timeout: 240 seconds] 17:12:40 i wonder how they manage to squeeze out more and more performance from JS. it's still improving, isn't it ? 17:13:11 -!- hkBst [~quassel@gentoo/developer/hkbst] has quit [Remote host closed the connection] 17:14:04 masm [~masm@bl16-182-101.dsl.telepac.pt] has joined #scheme 17:14:49 I think parenthases are an acquired taste 17:15:18 I liked parentheses from the start, I've always hated operator precedence. :-P 17:16:34 i'm guessing we all have a bit OCD in here 17:17:09 lol. 17:17:37 ;-) 17:18:51 wingo [~wingo@90.164.198.39] has joined #scheme 17:22:09 Well, I knew the precedence of operators by heart for the first two programming languages I learned (L.S.E. and Pascal). But then I learned so many more programming languages, and some of them have so many operator precedence level (eg. C++), that I started to put parentheses around each operator and ignore the table. 17:22:23 tupi [~david@189.60.162.71] has joined #scheme 17:22:38 Perhaps those who dislike parentheses are those who know only one programming language. 17:24:29 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 17:24:31 taylanub: re: "more performance from JS" - my impression: (1) js was starting from "pretty slow" and had a lot of room for improvement. and... 17:25:34 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 17:25:35 since it is used in every browser, people are compeled to optimize it a lot. We should embed a Common Lisp (or a scheme in #scheme) into firefox. 17:25:47 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 248 seconds] 17:25:53 (2) they can assume the simple path, make it as fast as possible, plus hooks to detect the nasty features at runtime then regress to support them. 17:26:29 -!- kuribas [~user@dD57635B6.access.telenet.be] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 17:26:29 Yes, you can't imagine the dirty tricks you have to implement to optimize ill designed systems. 17:26:34 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 17:28:41 -!- rasterbar [~rasterbar@unaffiliated/rasterbar] has quit [Remote host closed the connection] 17:28:43 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 17:28:49 Harrold [~quassel@dhcp-101-110.hpsc-staff.carleton.ca] has joined #scheme 17:30:32 jewel [~jewel@196-215-16-243.dynamic.isadsl.co.za] has joined #scheme 17:34:26 I've always ignored operator precedence. always put parentheses around everything. 17:34:29 adu [~ajr@softbank220043139062.bbtec.net] has joined #scheme 17:35:16 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 17:35:16 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 17:35:16 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 17:35:45 Many programmers are scared of brackets because most of them use inferior editors. :-P 17:36:03 Teeko [~Teeko@184.Red-83-49-132.dynamicIP.rima-tde.net] has joined #scheme 17:36:47 that too. but also they don't realize that other languages need much more punctuation than lisps. they see () as the only hindrance, but they don't realize their language uss [] {} . -> ; all with different meanings 17:43:32 I have a solution for them. 17:43:35 GolfScript. :-P 17:45:30 Scheme also uses . and => though. 17:46:30 when does it use => ? in cond you mean? 17:46:41 Yep. 17:47:01 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 260 seconds] 17:47:07 that's just a bit of syntax, it doesn't permeate the whole language, and you can do without it too. 17:47:18 we have punctuation for convenience 17:47:52 I consider the syntax to be fine, in both C-like languages or Lisps. 17:48:09 you consider C syntax to be fine? 17:48:50 Yes, why not? 17:50:06 ...because it's hideous? 17:50:13 C syntax has a pretty hardcore learning curve. 17:50:22 Especially when dealing with pointers to functions. 17:50:29 Or pointers to members, in C++. :-P 17:50:40 HG` [~HG@dslb-188-109-175-148.pools.arcor-ip.net] has joined #scheme 17:51:04 I have never found it hideous, just different to lisp-based languages. 17:51:08 and it has traps, like switch falling through the cases 17:51:18 I find it different and worse. 17:51:20 carleastlund [~cce@gotham.ccs.neu.edu] has joined #scheme 17:52:33 rien: You might like C#, then. 17:52:41 rien: There is no fallthrough in C#. 17:52:59 cky: I've tried C#. I don't like sacrificing virgins to be able to pass a function to another function. 17:53:21 rien: What? C# has delegates. That's the normal way to pass a method handle to another function. 17:53:33 There is goto though... 17:53:35 yes, I know that. 17:53:47 (to go from one switch case to another one) 17:53:49 Teeko: Yes, you can use goto in a switch to simulate fallthrough, but that's by intention. 17:54:07 Teeko: The language doesn't let you accidentally fallthrough. 17:54:11 delegates are a horrible idea for pretending that functions are first class 17:54:24 are they like java's anonymous classes? 17:54:27 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 17:54:27 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 17:54:27 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 17:54:31 jewel: No. :-) 17:54:51 jewel: In the late 90s, Sun and Microsoft had a big tiff over delegates vs anonymous inner classes. 17:56:03 they didn't think of simply making functions first class? 17:56:10 -!- Gmind [~Nevermind@113.190.192.10] has quit [Read error: Connection reset by peer] 17:56:37 rien: Can you imagine what the static type of a first-class function might be? How accessible would it be to a Java programmer? :-) 17:57:04 cky: I remember reading a tutorial on explaining call/cc in C#. it was some of the most horrible code I've seen 17:57:12 -!- femtooo [~femto@95-89-198-8-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 17:57:14 Hahahahahahaha. 17:57:43 -!- nilg [~user@77.70.2.229] has quit [Remote host closed the connection] 17:57:52 Teeko, goto considered beneficial. 17:58:13 I also don't have anything against goto. :) 17:58:40 Don't ML-family languages have static typing and first-class functions? How go they do it? 17:59:03 s/go/do/ 17:59:07 Haskell too. 17:59:24 they have a better type system, though. 17:59:42 Ubiquitous type inference. (in the case of ML) 17:59:51 Indeed. 18:00:06 So Java doesn't do anything like that? 18:00:08 fantazo_ [~fantazo@178-191-172-213.adsl.highway.telekom.at] has joined #scheme 18:00:08 I can't imagine C#, much less Java, adopting that type of type inference. 18:00:10 In Scala for example, declarations of types can get very ugly though. 18:00:37 I don't have anything against goto either. Dijsktra was wrong. :) 18:00:38 brb 18:01:09 Dijkstra wasn't wrong :-P 18:01:16 For example: def map [B, That] (f: ((A, B))  B)(implicit bf: CanBuildFrom[Map[A, B], B, That]) : That 18:01:31 But, gotos aren't necessarily bad, using gotos is bad! 18:01:43 (type declarations for scala's "map" in mutable collections) 18:01:48 fds: "come from" is good, though. :-) 18:02:29 *cky* thinks about implementing "come from" in Scheme. :-P 18:03:19 How does that work? :-s 18:03:25 fds: Quick example: 18:03:34 do_thing(); 18:03:41 label: this_is_skipped(); 18:03:48 come from label; 18:03:54 do_more_things(); 18:03:56 -!- fantazo [~fantazo@178-191-162-47.adsl.highway.telekom.at] has quit [Ping timeout: 260 seconds] 18:04:08 i.e., when a come from happens, a goto is inserted at the label given. 18:05:12 If multiple come froms refer to the same label, the behaviour is undefined. :-P 18:05:40 -!- DT`` is now known as DT 18:05:40 I see... 18:05:45 -!- DT is now known as DT`` 18:05:53 That sounds like a slightly ess useful version of goto. :-P 18:05:53 1: comefrom 2 18:05:55 2: comefrom 1 18:06:02 s/ess/less/ 18:06:19 fds: It comes from INTERCAL; what do you expect? 18:06:28 Hahaha 18:06:40 I understand now. :-P 18:07:01 cky, I see what you did there. 18:07:26 DT``: :-P 18:14:19 githogori [~githogori@49.sub-75-208-78.myvzw.com] has joined #scheme 18:15:40 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 240 seconds] 18:17:06 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 18:17:06 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 18:17:06 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 18:27:28 -!- lithpr [~user@cpe-204-210-208-155.neo.res.rr.com] has quit [Remote host closed the connection] 18:27:52 lithpr [~user@cpe-204-210-208-155.neo.res.rr.com] has joined #scheme 18:30:57 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 18:38:36 using gotos is not bad. having one flag for each loop in embedded loops to be able to exit them is bad. 18:40:50 Isn't that what an escape continuation is for? :) 18:42:44 pattern [~pattern@unaffiliated/pattern] has joined #scheme 18:43:05 it can help there too :) but blub doesn't have first class continuations 18:43:36 Ah. that's unfortunate. I'm a big fan of CPS myself. 18:43:42 me too. 18:44:42 I even have a macro to make it easier to write. 18:46:38 i've just started reading up on how scheme was influenced by the actor model 18:46:47 but, according to this: https://secure.wikimedia.org/wikipedia/en/wiki/History_of_the_Actor_model#Scheme 18:46:48 http://tinyurl.com/4kjlwyj 18:47:27 in their article on scheme, sussman and steele claimed to have "discovered that the 'actors' and the lambda expressions were identical in implementation" 18:47:45 but, "The actual situation is that the lambda calculus is capable of expressing some kinds of parallelism but, in general, **not** the concurrency expressed in the Actor model." 18:47:59 but how is that possible if lambda calculus is turing complete? 18:48:51 and, of course, scheme is also turing complete 18:49:22 and so is "brainfuck" the language 18:49:33 OISC is Turing-Complete.. but that's hardly useful :) 18:49:46 C is not Turing-complete. 18:49:49 18:49:56 yeah, but it's one thing to claim that something is hard to do in scheme... another to claim it's impossible 18:50:20 pattern, anyone can edit wikipedia. 18:50:34 it wouldn't be the first time wikipedia's wrong. 18:50:54 does it really claim that it's impossible in lambda calculus ? 18:51:13 taylanub: see the above quote 18:51:56 "lambda calculus is [not] capable of expressing ... the concurrency expressed in the Actor model" 18:51:57 hrmm, English is too vague :P but i guess you're right, it implies that "lambda calculus is incapable of expressing the concurrency expressed in the Actor model" 18:52:14 *pattern* nods 18:52:26 also, see here: https://secure.wikimedia.org/wikipedia/en/wiki/Carl_Hewitt#Actor_model 18:52:43 Surely Turing-completeness relates to computability and not concurrency? 18:52:43 sussman and steele's "Scheme interpreter was not capable of fully implementing the Actor model because Actor customers cannot be implemented as lambda calculus continuations and Actors can change their local state in a way that is impossible in the lambda calculus" 18:53:11 I haven't yet understood why continuation passing style is considered to be good style, as it looks for me longer. 18:53:35 fds: well, that depends on whether you think some concurrency is not computable 18:54:06 CPS allows you to do things you can't easily do otherwise 18:54:14 fantazo_, every function call is in tail position. 18:54:15 I use it for large amounts of concurrency and parallelism 18:54:38 turing-completeness has nothing to do with being able to express something in a language, though. 18:55:03 rien: it does if the language is the lambda calculus 18:55:18 as the lambda calculus has been proven to be equivalent to a turing machine 18:55:40 pattern: Well, just because two different processes can compute the same thing, they might not both be equally amenable to concurretising (what is this word?! Turning into a concurrent process. :-P) 18:55:48 well, one thing lambda calculus can't express is a function that takes two arguments. it can have something that works as if it were a function that takes two arguments, though. 18:56:04 And ofcourse Turing Completeness only considers whether a computation is -possible-, not if it is possible in sensible time. 18:56:14 I don't really know anything about concurrency issues though 18:56:19 OISC is Turing Complete, but e.g. it can only add two integers in linear time, not constant time. 18:57:31 tronador_ [~guille@190.66.169.203] has joined #scheme 18:58:17 rien: that's a notational difference, not a difference in computability 18:58:56 -!- pjb [~t@81.202.16.46.dyn.user.ono.com] has quit [Quit: need to install a new 2 TB HD.] 18:59:07 that's why I said that being able to _express_ something is not the same as turing-completeness because the latter is only concerned with computability and the former with appearance and abstraction 18:59:10 and, obviously, lambda calculus can be used to write an interpreter or a compiler for a language with functions that can take arbitrary numbers of arguments 18:59:38 yes, but you can never write in lambda calculus and have 2-arity functions 18:59:54 I'm just pointing this out because it's weird that people confuse these two things 19:00:19 can someone explain me the actor model in about ten words ?.. 19:00:21 That's a semantic quibble. You can't do that merely because lambda calculus is defined that way. 19:00:38 some languages that have closures compile to ASM but you can't have express a closure in x86 asm without macros. that's the difference. 19:00:43 You could as easily define lambda calculus to include functions of different arity. 19:01:13 yeah, it's like complaining that you can't write function in lambda calculus without using a period 19:01:14 And why on earth are you bringing in x86? 19:01:14 Jafet: I'm not saying lambda calculus is bad because of that. I just want to differentiate expressiveness from computability 19:01:26 pattern: except no one is complaining. 19:01:35 Jafet: ubiquity? 19:01:58 Of what relevance is its ubiquity? 19:02:31 \xy.xy is a lambda function of arity 2. Lambda calculus is perfectly capable of expressing such functions. 19:02:45 it's relevant as a means for an example. it's easier to talk about something that is ubiquitous rather than something arcane. 19:04:06 It's syntactic sugar for x.y.xy. 19:04:08 But unfortunately, your example was totally irrelevant. 19:04:15 rien has got a point, though. 19:04:23 expressiveness is not the same as computability. 19:04:29 Jafet: it wasn't irrelevant - you missed the point. 19:04:45 scroll back and start over. 19:05:09 I don't think we're talking about whether expression is the same as computation, because it's pretty clear to everyone that it isn't. 19:05:10 DT``: thanks 19:05:28 Jafet: it wasn't clear to pattern. read above. 19:05:38 13:54:38 < rien> turing-completeness has nothing to do with being able to express something in a language, though. 19:05:41 13:55:03 < pattern> rien: it does if the language is the lambda calculus 19:06:17 We seem to be talking about whether lambda calculus can express functions of higher arity, and it can, regardless of whether your definition of it includes such functions. 19:06:35 In particular, I was commenting on but you can never write in lambda calculus and have 2-arity functions 19:06:58 maybe that was a bad example. take the x86 example then. 19:07:31 I still totally fail to see the relevance of that example. 19:07:38 \xy.xy isn't x . y but x -> y so my point still stands, though. 19:07:47 Jafet, that's just being pedantic (just like is saying ``xy.xy'' is sugar for ``x.y.xy'') 19:07:49 rien: fwiw, I think your asm example is very ill placed: you can express a closure in asm via multiple statements, of which the repetition is eased by macros. If you don't buy this viewpoint, note then that anything one can do in scheme (or any other language, for that matter) that requires multiple statements to do so is similarly affected. 19:08:10 If "being pedantic" means "being right", I will continue being pedantic. 19:09:12 Obfuscate: but in scheme I can really abstract "multiple statements" and then be able to really *express* that idea from that point on. not the same in x86 asm without macros. indeed, that's why some asms have macros at all. 19:09:32 Jafet: thanks for playing, Jafet. 19:10:25 -!- charlietanksley [~charlieta@adsl-71-172-201.gsp.bellsouth.net] has quit [Quit: leaving] 19:10:45 I feel like I lost my time. 19:11:10 it's always a waste of time to interrupt a conversation just to "be right". 19:12:19 rien: Yes, you can, via labels which one can treat as functions, and most assemblers include macros in some form: now, how about scheme without macros? There's no real difference in abstraction capability here: assembly is just more verbose. 19:12:31 Okay. I apologize for my correct opinions. 19:12:46 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 260 seconds] 19:12:54 The only portion of scheme that's non-trivial to map directly to assembly is garbage collection. 19:13:11 Jafet: no problem. now go to #haskell and try to convince them that lambda calculus has 2-arity functions.you'll be laughed at. I don't laugh at you because I try to be polite. 19:13:27 I never said that it does. 19:13:43 Why don't you try reading the backlog? 19:14:05 I can't, it's muddled with incoherent thoughts. 19:14:16 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 19:14:26 I think your differences for this argument basically amount to the semantics of: lambda calculus can not have 2-arity functions, vs lambda calculus can emulate 2-arity functions. 19:14:32 That's because you were talking. 19:15:07 Obfuscate: I still think you can't because the variable will be accessible by other code outside the closure if you use labels. the only way is to use a macro that declares the variable somewhere else and makes the whole thing opaque. 19:16:08 Obfuscate: those two statements aren't necessarily in conflict. 19:16:09 Obfuscate: I agree with you that the power (for both assembly and scheme) of abstraction comes from the macro system 19:16:17 But from what rien's said, he seems to think they are 19:17:00 Jafet: I can go with any example. for instance, can lambda calculus "emulate" named functions? 19:17:37 What exactly does "emulate" mean to you? 19:17:45 Jafet: I consider both statements to be true. I'm not debating it further: it's just an observation of this conversation, which I think amounts to a semantic quibble. 19:17:55 Jafet: anything above and beyond "having" that you want it to mean 19:18:02 MrFahrenheit [~RageOfTho@users-148-113.vinet.ba] has joined #scheme 19:18:38 clearly lambda calculus has no way of naming functions. if there's a shorthand conventional notation for that, I don't know, but it's not part of lambda calculus 19:18:41 ijp [~user@host86-150-189-122.range86-150.btcentralplus.com] has joined #scheme 19:19:03 If you're honestly asking me, I would say that it cannot express that. 19:19:23 -!- emporas [~emporas@athedsl-174128.home.otenet.gr] has quit [Read error: Connection reset by peer] 19:19:39 Jafet: I was honestly asking you that. thank you. my point now is that even though it can't *express* that, nevertheless it can do whatever any other language can (do meaning execute any program) 19:19:43 People have tried to properly define the meaning of "expressible" or "syntactic sugar". Usually they arrive at some metric that describes how locally the transformation is. 19:19:47 common_tragedian [~common_tr@weir-02.slc.edu] has joined #scheme 19:20:01 rien: In assembly, that wouldn't really matter: no one cares about access control there. If you want to make a case that a difference in expressiveness of the languages lies there (again, in the limited world of no-macro assembly), then I'd agree. 19:20:13 Naming functions through beta reduction is decidedly non-local. 19:20:21 Beta abstraction, rather 19:20:40 Coalescing curried functions is local. 19:20:48 Obfuscate: ok, granted, it wouldn't matter, but that's beside the point. if the variable is accessible outside the closure then it *isn't* a closure and thus you can't express a closure in x86 asm. 19:21:00 Obfuscate: yep, then we agree 19:21:17 rien: why doesn't that fit your definition of a closure? 19:21:18 Obfuscate: but x86 was just an example. it has more powerful macros than C for instance. so the same could be said of C 19:21:43 Jafet: because it's called CLOS(ed)...ure 19:22:30 I'm not quite convinced by that argument-from-etymology (or -compounding). 19:23:07 a closure closes over some arguments. if the access to those arguments outside the closure is open, then it isn't closed. thus it's not a closure. it's not from etymology, it's from the definition thereof. 19:23:14 rien: It still is a closure: it just doesn't have an access control policy associated with it. In common usage, a closure just refers to the capturing of a local variable, or perhaps... a closure is a solution to at least one aspect of the funargs problem. 19:24:00 Obfuscate: if you allow that, then "closure" is now meaningless, because now any program with variables can be said to have closures 19:24:10 rien: here's a little exercise. Instead of calling them closures, let's call them quatloos. Clearly quatloos are the same thing as closures. Do the values in quatloos need to be lexically isolated for them to be quatloos? 19:24:58 rien: No. The existence of variables is not itself a solution to any portion of the funargs problem. 19:25:39 Normally, when one thinks of closures, they don't care whether the variable captured is isolated from potential mischief: they care whether the variable is captured so it can be accessed outside of the scope. 19:26:16 In other words, they care about the funargs problem (whether they know the name of it or not). 19:27:12 I see your point, but you can't say that having captured variables inaccessible from anywhere else isn't important. 19:27:20 tronador__ [~guille@190.66.178.203] has joined #scheme 19:27:44 -!- tronador_ [~guille@190.66.169.203] has quit [Ping timeout: 246 seconds] 19:27:45 -!- tronador__ is now known as tronador_ 19:28:02 I didn't say access control isn't important (or useful)... just that it's not part of the usual definition of a closure. 19:28:57 I disagree. I think we need an authoritative definition of closures. I could be wrong. 19:29:30 rien: your concern is irrelevant to the problem that quatloos solve -- they let you package up a function with its environment so that you can call it in a different environment. 19:29:31 -!- common_tragedian [~common_tr@weir-02.slc.edu] has quit [Remote host closed the connection] 19:29:52 Also, wikipedia, for one, lists a totally different reason why they are named closures. 19:31:17 "[...] a lambda expression whose open bindings (free variables) have been closed by (or bound in) the lexical environment, resulting in a closed expression, or closure." 19:31:41 Jafet: I understand that and I'm eternally indebted to them for allowing be to do that. I do believe it would be chaos if those variables could be accessed and/or changed outside their scope. 19:32:11 Jafet: uh... that agrees perfectly with my "CLOS(ed)...ure" 19:32:14 a closure is a first-class function with free variables that are bound in the lexical environment. Such a function is said to be "closed over" its free variables. 19:32:17 No, it doesn't. 19:32:27 Also, Scheme and many other languages allow your "chaos". 19:32:56 Jafet: you have to be kidding me. 19:32:56 rien: Your definition of a closure isn't even acceptable in scheme. I have little interest in a semantic debate. 19:33:43 Obfuscate: it's not my definition - look above for what Jafet quoted from wikipedia. 19:33:55 rien: yes, I was just kidding you all along. Go back to your java/c++/etc and be happy. 19:34:19 Jafet: I code in scheme and I'm not aware that that chaos is possible here. 19:35:02 rien: I think you've misunderstood what "closed" means: it does not refer to access control; it refers to (additional) bindings. 19:35:52 rudybot: eval (let* ((xs (cons 1 2)) (f (lambda () xs))) (set-cdr! xs 3) (f)) 19:35:52 Jafet: your sandbox is ready 19:35:52 Jafet: error: reference to undefined identifier: set-cdr! 19:36:34 rudybot: (use r5rs) 19:36:35 rien: your r5rs sandbox is ready 19:36:35 rien: error: reference to an identifier before its definition: use in module: 'program 19:36:51 Well, something like that. 19:36:54 rudybot, (let* ((xs (mcons 1 2)) (f ( () xs))) (set-mcdr! xs 3) (f)) 19:36:54 DT``: your sandbox is ready 19:36:54 DT``: ; Value: {1 . 3} 19:38:36 Jafet: now do it after the let is over with. I can do that in assembly and C if you say they allow closures. 19:38:59 I didn't and won't say they allow closures. 19:41:01 ...and that is my point. even though they don't allow closures, they can still represent any program, albeit with a different level of expressiveness from other languages. 19:41:09 I wish pattern could see me now. :) 19:42:17 They can't express closures. At least not with looking like C or x86 assembly any more. 19:42:34 -!- Pepe_ [~ppjet@static.205.131.4.46.clients.your-server.de] has quit [Quit: leaving] 19:42:44 Pepe_ [~ppjet@bouah.net] has joined #scheme 19:42:52 you're right. the only reason I was trying to make this point is that pattern didn't see it that way 19:43:01 C, or your assembler, might have macros that let you write a sub-language that can somehow express closures, though I doubt that. 19:43:24 C has downwards closures, but not upwards closures... as do many other languages that allow nested functions but aren't willing to sacrifice performance for full closures. 19:43:44 rien: but you were talking more nonsense than he was. 19:44:40 Jafet: if I was then I apologize 19:45:19 emporas [~emporas@athedsl-173509.home.otenet.gr] has joined #scheme 19:45:35 in my mind what he said was more absurd than what I was saying :P 19:45:39 rien: How about capturing xs twice, returning both closures from the let, and having them destroy each others arguments? 19:45:42 If pattern is still listening, lambda calculus does not have a model for concurrency. It merely models mathematical evaluation. There are process calculi (like the actor model itself, or Hoare's CSP) that do. 19:45:54 -!- taylanub [~taylanub@p4FD963D1.dip.t-dialin.net] has left #scheme 19:46:30 Obfuscate: destroy as in change? 19:46:40 that's totally ok too, whatever destroy means 19:46:57 Scheme is not quite lambda calculus, but an imperative language, so you can do concurrency in it directly. There are also attempts to do it more abstractly by changing the language model, such as with delimited continuations 19:46:58 Jafet: my question regarded why the actor model couldn't be implemented in the lambda calculus 19:47:18 pattern: well, what is the actor model? 19:47:33 Obfuscate: as long as xs can't be accessed by something that can't be traced to that let* 19:47:44 there he is! hi pattern :) 19:47:45 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 19:47:45 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 19:47:45 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 19:48:12 -!- wingo [~wingo@90.164.198.39] has left #scheme 19:48:57 According to wikipedia, the actor model already relies on concepts from concurrent computing. So you might want to think about what concurrency is. 19:49:14 rien: I take it your concern is specifically about the lexical scoping issues then, and not actually access control? 19:50:07 Hm, according to wikipedia, wikipedia is experiencing technical difficulties 19:50:25 I'll believe them, just this once. 19:50:39 But it sounds like it's from a primary source 19:51:19 it's working fine for me 19:51:29 "In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other." 19:51:57 Obfuscate: http://paste.lisp.org/display/120287 19:52:00 That definition is quite insightful. It includes words like "computations", "executing", "simultaneously" 19:52:26 I expect that these words are conspicuously absent from the definition of lambda calculus. 19:53:13 that's what the actor model is for 19:53:20 pattern: do you agree that expressiveness is not the same as computability? I didn't hear your side of it. 19:53:48 pattern: now do you see why the lambda calculus cannot model concurrency? 19:53:59 -!- Teeko [~Teeko@184.Red-83-49-132.dynamicIP.rima-tde.net] has quit [Ping timeout: 246 seconds] 19:54:20 Jafet: no 19:55:13 rien: i never said that they were the same 19:55:32 How is lambda calculus supposed to execute a computation, when it does not even have the concept of executing? 19:55:54 -!- Harrold [~quassel@dhcp-101-110.hpsc-staff.carleton.ca] has quit [Ping timeout: 255 seconds] 19:56:32 rien: Okay, that's just a lexical scoping concern. If you change "allows this" to "can't implement closures without allowing this", then we agree on a definition. 19:56:39 Jafet: you can perform calculations using the lambda calculus (any computation that can be performed on a turing machine, to be precise) 19:57:03 pattern: you said one has something to do with the other then. can you explain? 19:57:30 pattern: What functionality does lambda calculus have to state that two things should be performed simultaneously? 19:57:39 corruptmemory [~jim@96.246.167.18] has joined #scheme 19:58:26 pattern: yes, but you haven't answered the question. 19:58:52 Teeko [~Teeko@162.Red-88-22-219.staticIP.rima-tde.net] has joined #scheme 19:59:21 Obfuscate: let me think 20:00:30 Obfuscate: yes we agree then (sorry, double negatives... :) ) 20:01:57 Jafet: an execution is a performance of a computation, which is what the lambda calculus can be used for 20:02:18 But lambda calculus cannot express how it is executed. 20:02:41 why not? 20:02:47 rien: ... well, for the case of lexical closures, at least (which doesn't apply to assembly, because most assembly languages don't even have lexical scope). 20:02:58 You think it can? You'd better read about it again. 20:02:59 Obfuscate: I think "can't implement closures without allowing this" is ambiguous, though. can you rephrase? 20:03:08 pattern: Think about my question for a bit. 20:04:07 Jafet: just because the definition of the lambda calculus does not specify the order of evaluation doesn't mean such an order can't be expressed in the lambda calculus... and, in effect, the lambda calculus that the lambda calculus can specify any order of evaluation you choose for it 20:04:32 pattern: really? Show me how to express the order. 20:05:41 Jafet: you want me to implement a lambda calculus interpreter here for you on the spot? 20:05:50 please wait... 20:05:52 rien: If the only means of implementing a closure requires creating a new identifier that is not local to the scope of the original captured variable, then the language can not express lexical closures. Is that good enough? 20:06:24 Just a sketch will do. Anyway, you're the only one claiming it is possible, so perhaps you should be the one to try it. 20:06:54 Jafet: and what are you claiming? 20:06:57 that it's impossible 20:07:07 do you have an implementation showing that? 20:07:08 I don't want an interpreter. I want to see you force an evaluation order in the lambda calculus itself. 20:07:20 schmir [~schmir@p54A9260C.dip.t-dialin.net] has joined #scheme 20:08:11 anyway, i think both our times can be used to a better extent than bickering about this 20:08:23 rien: Your concern is really just lexical closures, and not general closures, but most functional language users only think of the former, so I think your viewpoint is reasonable. 20:08:32 Obfuscate: yes, that's perfect now! :) 20:08:37 i was just curious about why the actor model couldn't be expressed int eh lambda calculus 20:08:38 If you're going to not do anything but stick your fingers in your ears and say to yourself that wikipedia and the folks on #scheme are buck wrong, then don't even bother asking here. You're wasting everyone's time. 20:08:45 and i see is shouldn't have bothered asking here 20:08:51 Excellent... 20:08:53 as no one here seems to have a clue 20:09:05 i should just dig up the original papers 20:09:10 thanks anyway 20:09:11 -!- pattern [~pattern@unaffiliated/pattern] has left #scheme 20:09:17 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 250 seconds] 20:09:28 Obfuscate: ok. I can see I still have a lot to learn but that was my main concern with closures, yes :) 20:09:35 Obfuscate: thanks for the patience 20:09:53 I wonder if he learned anything, or still thinks plain lambda calculus can express evaluation order somehow. 20:09:55 Pompous arse -- wants me to prove his impossible. 20:10:23 rien: It just seemed like a semantics issue, in any case. 20:10:47 -!- jewel [~jewel@196-215-16-243.dynamic.isadsl.co.za] has quit [Ping timeout: 246 seconds] 20:11:15 jesusito [~user@54.pool85-49-28.dynamic.orange.es] has joined #scheme 20:11:56 rins [~user@173-162-214-174-NewEngland.hfc.comcastbusiness.net] has joined #scheme 20:12:10 Jafet: proving negatives is a bit silly, I agree. :P 20:12:43 Jafet: let me just say I appreciate your patience towards making people learn by themselves. 20:12:53 Jafet: honestly. thank you. 20:13:43 That's the only kind of learning that has real value to me. 20:14:29 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 20:14:29 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 20:14:29 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 20:14:40 yes, and I agree, you're one of the users here that really make this channel great. 20:14:54 by teaching via the socratic method :) 20:15:19 what is in scheme the general agreed way to implement / use "introspection"? 20:17:26 -!- schmir [~schmir@p54A9260C.dip.t-dialin.net] has quit [Ping timeout: 276 seconds] 20:18:42 fantazo_: can you elaborate? 20:19:07 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 248 seconds] 20:20:40 pjb [~t@81.202.16.46.dyn.user.ono.com] has joined #scheme 20:22:25 -!- tauntaun [~icarus@ool-44c7e46c.dyn.optonline.net] has quit [Quit: Ex-Chat] 20:22:56 basically creating a new type and working with that. what is the general best pracitce for attaching the type to a piece of data? adding just a simple symbol to it? 20:23:18 like '(im-a-hash #) 20:24:14 if your implementation allow structs, use them. 20:24:33 else, there are the srfi 9, 57 and 99. 20:25:08 -!- Teeko [~Teeko@162.Red-88-22-219.staticIP.rima-tde.net] has quit [Ping timeout: 246 seconds] 20:25:11 they should also be implemented by slib, I don't remember. 20:25:36 if you don't like the srfis and your implementation doesn't provide structs. 20:25:41 go with tagged lists. 20:26:37 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 20:26:37 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 20:26:37 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 20:31:41 Teeko [~Teeko@162.Red-88-22-219.staticIP.rima-tde.net] has joined #scheme 20:39:32 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 276 seconds] 20:41:38 -!- snorble [~snorble@s83-179-14-105.cust.tele2.se] has quit [Ping timeout: 240 seconds] 20:42:05 snorble [~snorble@s83-179-14-105.cust.tele2.se] has joined #scheme 20:49:47 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 20:49:47 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 20:49:47 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 21:01:25 bweaver [~user@host-68-169-175-225.WISOLT2.epbfi.com] has joined #scheme 21:10:44 -!- christopher [~christoph@66.202.158.22] has quit [Ping timeout: 276 seconds] 21:17:17 -!- ijp [~user@host86-150-189-122.range86-150.btcentralplus.com] has quit [Ping timeout: 246 seconds] 21:19:06 davazp [~user@201.Red-88-6-204.staticIP.rima-tde.net] has joined #scheme 21:24:43 -!- pbusser [~peter@ip138-238-174-82.adsl2.static.versatel.nl] has quit [Quit: ircII EPIC4-2.6 -- Are we there yet?] 21:34:05 -!- tronador_ [~guille@190.66.178.203] has quit [Ping timeout: 246 seconds] 21:34:30 tronador_ [~guille@190.255.85.21] has joined #scheme 21:35:32 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 21:38:57 christopher [~christoph@c-98-201-58-105.hsd1.tx.comcast.net] has joined #scheme 21:39:46 -!- masm [~masm@bl16-182-101.dsl.telepac.pt] has quit [Quit: Leaving.] 21:42:58 -!- vrajmohan [~vrajmohan@64.55.31.190] has quit [Quit: Leaving.] 21:42:59 -!- tronador_ [~guille@190.255.85.21] has quit [Read error: Connection reset by peer] 21:43:27 tronador_ [~guille@190.66.191.25] has joined #scheme 21:44:00 carbocalm [~user@38.99.165.166] has joined #scheme 21:44:46 -!- tronador_ [~guille@190.66.191.25] has left #scheme 21:52:17 jeapostrophe [~jay@lallab.cs.byu.edu] has joined #scheme 21:54:08 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 240 seconds] 21:59:57 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 21:59:57 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 21:59:58 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 22:06:50 -!- langmartin [~user@exeuntcha2.tva.gov] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 22:08:23 -!- christopher [~christoph@c-98-201-58-105.hsd1.tx.comcast.net] has quit [Ping timeout: 246 seconds] 22:10:33 -!- stamourv [~user@ahuntsic.ccs.neu.edu] has quit [*.net *.split] 22:15:00 -!- jesusito [~user@54.pool85-49-28.dynamic.orange.es] has left #scheme 22:26:08 -!- emporas [~emporas@athedsl-173509.home.otenet.gr] has quit [Ping timeout: 276 seconds] 22:30:36 -!- HG` [~HG@dslb-188-109-175-148.pools.arcor-ip.net] has quit [Quit: Leaving.] 22:31:00 pumpkin [~pumpkin@17.101.89.204] has joined #scheme 22:31:00 -!- pumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 22:31:00 pumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 22:33:15 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 264 seconds] 22:44:12 -!- DT`` [~Feeock@2.32.84.48] has quit [Ping timeout: 255 seconds] 22:45:45 -!- drdo [~user@91.205.108.93.rev.vodafone.pt] has quit [Remote host closed the connection] 22:46:05 -!- aisa [~aisa@173-10-243-253-Albuquerque.hfc.comcastbusiness.net] has quit [Quit: aisa] 22:49:35 blueadept [~blueadept@unaffiliated/blueadept] has joined #scheme 22:50:03 -!- pumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 264 seconds] 22:52:50 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 22:52:50 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 22:52:50 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 22:52:55 DT`` [~Feeock@net-93-149-47-151.cust.dsl.teletu.it] has joined #scheme 22:54:02 drdo [~user@91.205.108.93.rev.vodafone.pt] has joined #scheme 22:55:01 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 23:02:32 emporas [~emporas@athedsl-168320.home.otenet.gr] has joined #scheme 23:02:38 -!- martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has quit [Ping timeout: 246 seconds] 23:03:03 pumpkin [~pumpkin@17.101.89.204] has joined #scheme 23:03:03 -!- pumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 23:03:03 pumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 23:04:06 christopher [~christoph@129.7.255.127] has joined #scheme 23:04:21 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 260 seconds] 23:06:35 masm [~masm@bl16-182-101.dsl.telepac.pt] has joined #scheme 23:06:35 -!- masm [~masm@bl16-182-101.dsl.telepac.pt] has quit [Client Quit] 23:17:36 -!- corruptmemory [~jim@96.246.167.18] has quit [Ping timeout: 276 seconds] 23:22:09 -!- christopher [~christoph@129.7.255.127] has quit [Remote host closed the connection] 23:22:57 christopher [~christoph@129.7.255.127] has joined #scheme 23:23:52 homie` [~levgue@xdsl-78-35-134-218.netcologne.de] has joined #scheme 23:25:55 copumpkin [~pumpkin@17.101.89.204] has joined #scheme 23:25:56 -!- copumpkin [~pumpkin@17.101.89.204] has quit [Changing host] 23:25:56 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme 23:26:02 -!- homie [~levgue@xdsl-78-35-183-236.netcologne.de] has quit [Ping timeout: 240 seconds] 23:26:38 -!- christopher [~christoph@129.7.255.127] has quit [Read error: Operation timed out] 23:26:42 martinhex [~mjc@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 23:28:00 -!- pumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 276 seconds] 23:33:41 dnolen [~davidnole@184.152.69.75] has joined #scheme 23:33:48 -!- carleastlund [~cce@gotham.ccs.neu.edu] has quit [Quit: carleastlund] 23:34:58 tauntaun [~icarus@64.134.66.112] has joined #scheme 23:40:27 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 255 seconds] 23:43:26 -!- pchrist [~spirit@gentoo/developer/pchrist] has quit [Ping timeout: 260 seconds] 23:47:39 -!- copumpkin [~pumpkin@unaffiliated/pumpkingod] has quit [Ping timeout: 264 seconds] 23:50:19 -!- dnolen [~davidnole@184.152.69.75] has quit [Quit: dnolen] 23:56:10 _reid [~reid@pool-173-53-248-17.chi01.dsl-w.verizon.net] has joined #scheme 23:56:32 -!- kauwgom [~reid@pool-173-53-248-17.chi01.dsl-w.verizon.net] has quit [Ping timeout: 246 seconds]