2015-12-23T00:00:32Z ASau` joined #scheme 2015-12-23T00:01:40Z teurastaja quit (Ping timeout: 260 seconds) 2015-12-23T00:01:46Z teurastaja_ is now known as teurastaja 2015-12-23T00:03:11Z ASau` is now known as ASau 2015-12-23T00:12:48Z teurastaja quit (Ping timeout: 256 seconds) 2015-12-23T00:22:48Z wildlander quit (Quit: Saliendo) 2015-12-23T00:30:31Z karswell joined #scheme 2015-12-23T00:45:21Z micmus quit (Quit: Leaving) 2015-12-23T00:52:08Z wolfcore quit (Read error: Connection reset by peer) 2015-12-23T00:59:34Z jcowan joined #scheme 2015-12-23T00:59:46Z adu quit (Quit: adu) 2015-12-23T01:02:19Z stepnem quit (Ping timeout: 260 seconds) 2015-12-23T01:03:21Z wolfcore joined #scheme 2015-12-23T01:03:44Z wolfcore is now known as Guest1487 2015-12-23T01:13:36Z karswell quit (Remote host closed the connection) 2015-12-23T01:18:49Z Beluki quit (Quit: Beluki) 2015-12-23T01:22:26Z adu joined #scheme 2015-12-23T01:22:32Z mumptai quit (Quit: Verlassend) 2015-12-23T01:36:21Z cemerick joined #scheme 2015-12-23T01:37:07Z spew joined #scheme 2015-12-23T01:38:59Z magine joined #scheme 2015-12-23T01:47:28Z physixer joined #scheme 2015-12-23T01:48:09Z physixer: which schemes implement hindley-milner type system, or something better if any? 2015-12-23T01:50:12Z badkins quit (Remote host closed the connection) 2015-12-23T01:58:02Z mmc quit (Ping timeout: 255 seconds) 2015-12-23T02:01:02Z turbofail: the only one i know of is prescheme, which is what is used to write the VM of scheme48 2015-12-23T02:01:19Z turbofail: i have no idea how to use the compiler though 2015-12-23T02:02:09Z sethalves quit (Remote host closed the connection) 2015-12-23T02:02:15Z turbofail: http://www.s48.org/cgi-bin/hgwebdir.cgi/s48/file/a44624256297/ps-compiler 2015-12-23T02:03:09Z physixer: why do lisp/scheme community not implement it? type-system is a not concept not a langauge-specific construct and yet the ML snobs tout is as a reason to use ML 2015-12-23T02:03:52Z physixer: that's like Java snobs of mid 90s speaking of how it's portable because JVM. JVM is not a property of the language. If you create a shit language but make it portable I"m not interested. 2015-12-23T02:04:53Z physixer: *type-system is a concept not a language-specific construct 2015-12-23T02:05:36Z jcowan: physixer: It's limiting. Type systems ensure that no program can be executed unless it is provably well-typed. There are Scheme type systems which will execute programs unless they are provably *not* well typed, but the error messages turn out to be hard to undertsand. 2015-12-23T02:06:56Z physixer: jcowan: just make it a feature. Programmer can turn it on when they want. 2015-12-23T02:07:09Z jcowan: Racket has that feature, Typed Scheme. 2015-12-23T02:07:13Z jcowan: (or Typed Racket) 2015-12-23T02:07:35Z jcowan: But the system is much more complex than H-M types. 2015-12-23T02:08:09Z jcowan: http://docs.racket-lang.org/ts-guide/ 2015-12-23T02:08:57Z Shadox quit (Read error: Connection reset by peer) 2015-12-23T02:16:39Z aap_ joined #scheme 2015-12-23T02:16:39Z aap quit (Read error: Connection reset by peer) 2015-12-23T02:17:51Z badkins joined #scheme 2015-12-23T02:17:57Z pilne quit (Quit: Quitting) 2015-12-23T02:18:33Z badkins quit (Remote host closed the connection) 2015-12-23T02:19:04Z jcowan quit (Quit: Leaving) 2015-12-23T02:23:25Z pilne joined #scheme 2015-12-23T02:24:55Z psy_ quit (Ping timeout: 240 seconds) 2015-12-23T02:32:38Z AkashicLegend joined #scheme 2015-12-23T02:34:01Z duggiefresh quit (Remote host closed the connection) 2015-12-23T02:37:17Z Necrosporus: I feel like some Lisp is quite hard to read, especially without parentheses coloring 2015-12-23T02:37:26Z sethalves joined #scheme 2015-12-23T02:37:37Z physixer: Necrosporus: so color it. 2015-12-23T02:37:57Z Necrosporus: https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html how do I color it here? 2015-12-23T02:40:10Z physixer: physixer: if you wanna go crazy you could write a javascript code. But an easier way is to simply copy-paste the code into your editor that supports color. 2015-12-23T02:41:20Z physixer: just my two cents. I'm not a lisp/scheme expert. Another option I'm considering for myself is to write a text editor extension that indents automatically based on paranthesis and then hides them. So you're code looks like python but is actually lisp/scheme. 2015-12-23T02:44:43Z lambda-11235: Necrosporus: With pure imagination. :) 2015-12-23T02:46:29Z nilg joined #scheme 2015-12-23T03:04:33Z pilne quit (Quit: Quitting) 2015-12-23T03:08:33Z pilne joined #scheme 2015-12-23T03:15:19Z pierpa quit (Ping timeout: 260 seconds) 2015-12-23T03:17:16Z physixer quit (Quit: leaving) 2015-12-23T03:31:08Z turtleman_ quit (Quit: Leaving) 2015-12-23T03:34:04Z spew_ joined #scheme 2015-12-23T03:34:36Z spew_ quit (Client Quit) 2015-12-23T03:34:43Z spew quit (Remote host closed the connection) 2015-12-23T03:38:03Z spew joined #scheme 2015-12-23T03:42:48Z davexunit quit (Quit: Later) 2015-12-23T03:43:15Z ArneBab joined #scheme 2015-12-23T03:46:44Z ArneBab_ quit (Ping timeout: 276 seconds) 2015-12-23T03:51:42Z spew quit (Quit: leaving) 2015-12-23T03:55:01Z nilg quit (Remote host closed the connection) 2015-12-23T04:04:54Z pilne quit (Quit: Quitting) 2015-12-23T04:05:52Z duggiefresh joined #scheme 2015-12-23T04:10:57Z Menche quit (Quit: Leaving) 2015-12-23T04:12:15Z duggiefresh quit 2015-12-23T04:36:01Z teurastaja joined #scheme 2015-12-23T04:43:10Z teurastaja: garbage collection techniques? 2015-12-23T04:43:26Z teurastaja: with emphasis on space 2015-12-23T04:47:13Z teurastaja: microcontroller space if you know what i mean 2015-12-23T04:47:38Z teurastaja: more specifically a 8051 variant 2015-12-23T04:49:52Z mbuf joined #scheme 2015-12-23T04:50:41Z teurastaja: i have 1kB of internal SRAM for program/data and/or 64kB external paged memory 2015-12-23T04:51:01Z teurastaja: is it doable? 2015-12-23T04:52:29Z adu: everything is doable 2015-12-23T04:53:32Z teurastaja: i know nothing of garbage collection techniques on a 8051 2015-12-23T04:53:52Z teurastaja: im looking for pointers 2015-12-23T04:56:19Z daviid joined #scheme 2015-12-23T05:19:33Z AkashicLegend quit (Quit: zz) 2015-12-23T05:22:45Z eli joined #scheme 2015-12-23T05:22:45Z eli quit (Changing host) 2015-12-23T05:22:45Z eli joined #scheme 2015-12-23T05:41:45Z teurastaja quit (Ping timeout: 260 seconds) 2015-12-23T05:42:19Z mrowe is now known as mrowe_away 2015-12-23T05:54:07Z adu quit (Quit: adu) 2015-12-23T05:58:47Z daviid quit (Ping timeout: 255 seconds) 2015-12-23T06:25:04Z qwan joined #scheme 2015-12-23T06:43:32Z ecthiender joined #scheme 2015-12-23T06:44:04Z ecthiender quit (Remote host closed the connection) 2015-12-23T07:04:19Z gabot quit (Ping timeout: 245 seconds) 2015-12-23T07:04:59Z eli quit (Ping timeout: 276 seconds) 2015-12-23T07:05:09Z jrslepak quit (Ping timeout: 245 seconds) 2015-12-23T07:12:45Z ASau quit (Ping timeout: 260 seconds) 2015-12-23T07:18:32Z magine quit (Read error: Connection timed out) 2015-12-23T07:43:56Z alezost joined #scheme 2015-12-23T08:00:27Z cemerick quit (Ping timeout: 260 seconds) 2015-12-23T08:13:33Z sytse: Necrosporus: to me personally, even coloring feels pretty useless compared to interactivity, which is so nice that going back to non-lisp feels horrible now 2015-12-23T08:14:27Z Necrosporus: sytse, what do you mean as interactivity? There's a lot of other languages with REPL 2015-12-23T08:14:39Z sytse: Necrosporus: the ability to just jump around with the cursor to related parens (up/forward/backward/other etc) is somehow much quicker than looking around with the eyes 2015-12-23T08:14:42Z sytse: ie, https://github.com/abo-abo/lispy 2015-12-23T08:14:46Z sytse: see for demos at the bottom 2015-12-23T08:15:00Z Necrosporus: In what program do you do that? 2015-12-23T08:15:11Z sytse: (with links to youtube vids) 2015-12-23T08:15:12Z sytse: emacs 2015-12-23T08:15:55Z Necrosporus: I wonder if there are multiline repls 2015-12-23T08:16:24Z sytse: somebody should get better scheme support in lispy though.. 2015-12-23T08:16:53Z sytse: meh, with emacs you don't need a repl, you just evaluate the current sexp 2015-12-23T08:17:26Z sytse: I played around for 3 seconds with racket-mode in emacs, that was pretty neat (but slooooooooooww... sadly).. inline graphs and such things 2015-12-23T08:18:57Z sytse: hm, not inline maybe, that was just in my head for the mode I'm planning to develop, but it dumps images to the repl in another window within emacs if you evaluate stuff 2015-12-23T08:23:27Z lambda-11235 quit (Quit: Bye) 2015-12-23T08:38:07Z stepnem joined #scheme 2015-12-23T08:52:28Z foof quit (Remote host closed the connection) 2015-12-23T08:56:08Z foof joined #scheme 2015-12-23T09:23:27Z sethalves quit (Ping timeout: 265 seconds) 2015-12-23T09:31:05Z sethalves joined #scheme 2015-12-23T09:32:44Z sethalves1 joined #scheme 2015-12-23T09:35:15Z sethalves quit (Ping timeout: 240 seconds) 2015-12-23T09:36:30Z sethalves1 quit (Read error: Connection reset by peer) 2015-12-23T09:52:24Z sethalves joined #scheme 2015-12-23T09:59:48Z alezost quit (Quit: I live in GuixSD and Emacs ) 2015-12-23T10:21:21Z lritter joined #scheme 2015-12-23T10:33:12Z gravicappa joined #scheme 2015-12-23T10:44:06Z cmatei quit (Ping timeout: 240 seconds) 2015-12-23T11:09:40Z cmatei joined #scheme 2015-12-23T11:13:51Z Guest1487 quit (Changing host) 2015-12-23T11:13:51Z Guest1487 joined #scheme 2015-12-23T11:13:59Z Guest1487 is now known as wolfcore 2015-12-23T11:35:27Z szgyg joined #scheme 2015-12-23T11:46:24Z ecthiender joined #scheme 2015-12-23T11:53:08Z aap_ is now known as aap 2015-12-23T12:08:26Z ecthiender quit (Quit: gotta go) 2015-12-23T12:13:14Z teurastaja joined #scheme 2015-12-23T12:28:16Z mbuf quit (Read error: Connection reset by peer) 2015-12-23T12:29:34Z mmc joined #scheme 2015-12-23T12:47:02Z Beluki joined #scheme 2015-12-23T12:53:12Z ggole joined #scheme 2015-12-23T13:01:54Z davexunit joined #scheme 2015-12-23T13:01:56Z davexunit quit (Changing host) 2015-12-23T13:01:56Z davexunit joined #scheme 2015-12-23T13:07:07Z mumptai joined #scheme 2015-12-23T13:32:52Z teurastaja quit (Ping timeout: 250 seconds) 2015-12-23T13:47:14Z Mokuso joined #scheme 2015-12-23T13:54:19Z bogdanm quit (Ping timeout: 245 seconds) 2015-12-23T13:55:08Z bogdanm joined #scheme 2015-12-23T13:56:47Z spew joined #scheme 2015-12-23T14:02:15Z bogdanm quit (Ping timeout: 240 seconds) 2015-12-23T14:03:29Z bogdanm joined #scheme 2015-12-23T14:09:35Z gravicappa quit (Ping timeout: 260 seconds) 2015-12-23T14:09:50Z cemerick joined #scheme 2015-12-23T14:31:20Z stepnem quit (Ping timeout: 265 seconds) 2015-12-23T14:32:25Z joneshf-laptop joined #scheme 2015-12-23T14:33:29Z cemerick quit (Ping timeout: 276 seconds) 2015-12-23T14:36:14Z pierpa joined #scheme 2015-12-23T14:37:23Z mmc quit (Ping timeout: 276 seconds) 2015-12-23T14:47:36Z daviid joined #scheme 2015-12-23T14:53:41Z mmc joined #scheme 2015-12-23T14:59:30Z nzambe joined #scheme 2015-12-23T15:03:30Z bogdanm quit (Ping timeout: 272 seconds) 2015-12-23T15:03:51Z badkins joined #scheme 2015-12-23T15:05:08Z bogdanm joined #scheme 2015-12-23T15:15:12Z developernotes joined #scheme 2015-12-23T15:49:40Z jusss joined #scheme 2015-12-23T15:50:49Z jusss: from http://community.schemewiki.org/?call-with-current-continuation ,what this (set! do-other-stuff (call/cc do-other-stuff)) means ? 2015-12-23T15:51:06Z jusss: it really make me confused 2015-12-23T15:52:30Z fadein quit (Quit: leaving) 2015-12-23T15:53:20Z Beluki quit (Quit: Beluki) 2015-12-23T16:02:01Z newdan joined #scheme 2015-12-23T16:03:14Z jusss: newdan: here you're 2015-12-23T16:03:25Z jusss: newdan: from http://community.schemewiki.org/?call-with-current-continuation 2015-12-23T16:03:25Z jusss: ,what this (set! do-other-stuff (call/cc do-other-stuff)) means ? 2015-12-23T16:04:52Z jusss: newdan: are you here? 2015-12-23T16:05:12Z newdan: jusss: I don't use Scheme and can't answer your question, just seemed a more appropriate place to ask than #lisp 2015-12-23T16:05:57Z jusss: newdan: I see 2015-12-23T16:06:27Z jusss: it really make my brain twisted 2015-12-23T16:10:28Z wasamasa: so, call/cc is basically a goto... 2015-12-23T16:12:20Z wasamasa: oh and it allows you to hop back into the computation again 2015-12-23T16:13:36Z taylan: jusss: IMO call/cc is unnecessarily complicated, and since delimited continuations are generally superior I wouldn't bother that much with call/cc gymnastics. 2015-12-23T16:13:53Z wasamasa: what does it take to implement delimited continuations? 2015-12-23T16:14:04Z wasamasa: can you do this on top of call/cc? 2015-12-23T16:14:16Z wasamasa: or reuse whatever you've done to implement call/cc? 2015-12-23T16:14:49Z jusss: (set! do-other-stuff (call/cc do-other-stuff)) I'd like what it really means 2015-12-23T16:14:51Z taylan: jusss: but what (set! x (call/cc x)) does is, it calls the procedure x with one argument, say c (which again contains a procedure), and when the procedure returns *or* calls c, then execution returns to the point in the code with the (set! x ...), and the return value (or the argument to 'c') becomes the '...' there, defining the new value for x 2015-12-23T16:16:03Z taylan: e.g. (let ((x (lambda (c) (blah blah) (c 'foo)))) (set! x (call/cc x)) x) will do (blah blah) and return 'foo 2015-12-23T16:18:49Z jusss: taylan: it means make the return value of call/cc as the value of x ? 2015-12-23T16:19:46Z taylan: nope, x is called with a procedure argument, and then the argument to that procedure becomes the return value of call/cc 2015-12-23T16:20:03Z taylan: (call/cc (lambda (c) ... (c 'foo))) => foo 2015-12-23T16:20:46Z taylan: and usually (don't remember if this is in the standard), if you don't call that 'c' yourself, then the return value of that lambda would be implicitly passed to 'c' 2015-12-23T16:20:59Z taylan: I use the letter 'c' to mean 'continuation', by the way. 2015-12-23T16:23:20Z jusss: taylan: er... x is bound a lambda expression, and (call/cc x) will eval it and get return value foo, (set! x (call/cc x)) give foo to x, is that right ? 2015-12-23T16:23:47Z newdan: So call/cc is like a goto...? 2015-12-23T16:24:22Z jusss: newdan: call/cc is like goto, but it only goto down side not up side, I think, 2015-12-23T16:24:27Z taylan: x is bound to a procedure, and call/cc will call it with a procedure. when *that* procedure is called with an argument, it will become the new value of x. 2015-12-23T16:24:34Z taylan: it's a goto with an argument 2015-12-23T16:25:05Z newdan: Is it more complicated than that? All the examples I see do jumps. Is there a trivial way to re-enter a function after the jump point? 2015-12-23T16:25:09Z taylan: jusss: do you know the general call-with-foobar naming convention? for example (call-with-open-file "/foo/bar" (lambda (file-port) (write "blah" file-port))). 2015-12-23T16:25:11Z ggole: Goto is not a very useful model for call/cc. 2015-12-23T16:25:24Z newdan: (define (foo c) (display "Hello\n") (c 1) (display "World\n")) 2015-12-23T16:25:46Z taylan: that's where the call-with-... part of the name comes from. and the thing the procedure is called with is the "current continuation" i.e. a procedure that you can call to return to that point in execution. 2015-12-23T16:26:19Z taylan goes AFK 2015-12-23T16:29:30Z newdan: Oh, if you (call/cc) inside your function then it becomes resumable or something like that. Interesting (and my brain hurts a little) 2015-12-23T16:31:32Z jusss: taylan: call a procedure, and when it's done then return to the point that call it, this is (set! x (call/cc x)) really meaning, am I right ? 2015-12-23T16:35:25Z newdan: jusss: Maybe this will make it make sense: https://dpaste.de/z8FT 2015-12-23T16:36:20Z newdan: jusss: result will be 3, and "World" never gets shown (You can run it with 'guile -s' if you have guile) 2015-12-23T16:37:03Z jusss: newdan: I see 2015-12-23T16:38:07Z ggole: jusss: Not quite. It calls a procedure with a function argument, let's call it k, that can be called to return to that point. 2015-12-23T16:38:16Z lambda-11235 joined #scheme 2015-12-23T16:38:51Z dualbus quit (Quit: WeeChat 1.2) 2015-12-23T16:39:00Z ggole: When k itself is called, its argument becomes the return value of call/cc: that is, the next value for do-other-stuff. 2015-12-23T16:42:29Z jusss: ggole: (define x (lambda (k) ...)) (set! x (call/cc x)) if there's no (k 0) or (k other-things), so (set! x (call/cc x)) will be wait ? 2015-12-23T16:43:09Z ggole: It'll never happen. 2015-12-23T16:43:11Z jusss: ggole: and if (define x (lambda (k) (k 0))) (set! x (call/cc x)) so x will be 0 ? 2015-12-23T16:43:18Z ggole: Yes. 2015-12-23T16:45:00Z jusss: ggole: (define x (lambda (k) (+ 1 1))) (set! x (call/cc x)) so x will be 2 ? 2015-12-23T16:45:50Z jusss: ggole: and (set! x (k 0)) x will be 0 ? 2015-12-23T16:46:17Z ggole: Yep (although no continuations are involved in that last example.) 2015-12-23T16:46:37Z ggole: Wait, no: (k 0) will always return 2 in that last example. 2015-12-23T16:48:20Z jusss: ggole: (define x (lambda (k) (+ 1 1))) (set! x (call/cc x)) (set! x (k 0)) this will be a loop and x will be ? 2015-12-23T16:48:49Z Mokuso quit (Quit: brb) 2015-12-23T16:48:59Z ggole: Why don't you ask these questions of a scheme repl? 2015-12-23T16:49:08Z jusss: (set! x ) is waiting for call/cc, so set! x is continuation 2015-12-23T16:50:35Z ggole: No: if you call/cc a function that simply returns, the call/cc will simply return. 2015-12-23T16:52:50Z jusss: ggole: my mistake, (define goto 0) (define x (lambda (k) (set! goto k) (+ 1 1))) (set! x (call/cc x)) (goto 0) this is a loop ? 2015-12-23T16:54:25Z micmus joined #scheme 2015-12-23T16:54:43Z taylan: jusss: "call a procedure, and when it's done then return to the point that called it" almost right. the called procedure has this 'c' argument, and it can call that to return instead of returning normally. we could also call that argument 'return' to make it clear: (call/cc (lambda (return) ... (return 'foo))). and the interesting thing is, this 'return' thing can be stored somewhere (say in a 2015-12-23T16:54:43Z taylan: global variable) and called any time you want to "return" to that place again. 2015-12-23T16:54:46Z taylan: like a goto label 2015-12-23T16:58:06Z gravicappa joined #scheme 2015-12-23T16:58:17Z jusss: taylan: is there a simple example ? 2015-12-23T16:59:04Z Steverman joined #scheme 2015-12-23T16:59:09Z taylan: hmm, let's see 2015-12-23T16:59:55Z DGASAU quit (Ping timeout: 260 seconds) 2015-12-23T16:59:59Z taylan: ehh, I'm really not good with call/cc. delimited continuations feel so much more natural :) 2015-12-23T17:00:36Z newdan: taylan: How do you use delimited continuations? Is there some Scheme library? 2015-12-23T17:00:53Z taylan: Guile 2015-12-23T17:01:18Z DGASAU joined #scheme 2015-12-23T17:01:43Z taylan: a simple/useless example of call/cc usage might be: 2015-12-23T17:01:44Z taylan: (let ((c (call/cc (lambda (c) c)))) (display "infinite loop!\n") (c c)) 2015-12-23T17:03:13Z taylan: and this one terminates: 2015-12-23T17:03:13Z taylan: (let-values (((c i) (call/cc (lambda (c) (values c 5))))) (display "countdown: ") (display i) (newline) (unless (zero? i) (c c (- i 1)))) 2015-12-23T17:04:29Z taylan: as you see, I don't store it in a global variable; instead I return the continuation to itself... 2015-12-23T17:04:49Z taylan: it's like you're doomed to do weird stuff when you use call/cc :) 2015-12-23T17:07:31Z jusss: taylan: the first eg, return continuation c to variable c, then (c c) or (c 0) it will loop 2015-12-23T17:08:25Z taylan: it won't loop unless you do (c c). if you do (c 0), then in the next iteration 'c' will be 0 and it will try to call (c ...) and fail because c is now 0, and 0 is not a procedure. 2015-12-23T17:09:28Z karswell joined #scheme 2015-12-23T17:09:32Z jusss: taylan: yes, you're right! 2015-12-23T17:09:36Z turtleman_ joined #scheme 2015-12-23T17:10:11Z jusss: store it to itself, and call it itself 2015-12-23T17:10:47Z badkins quit (Ping timeout: 276 seconds) 2015-12-23T17:13:57Z jusss: (let ((c (call/cc (lambda (c) (c c))))) is ok ? 2015-12-23T17:18:02Z jusss: no, it's not ok 2015-12-23T17:22:42Z ggole: (call/cc (lambda (k) (k k))) has much the same effect as (call/cc (lambda (k) k)) 2015-12-23T17:25:56Z badkins joined #scheme 2015-12-23T17:28:23Z micmus quit (Ping timeout: 264 seconds) 2015-12-23T17:36:22Z qwan quit 2015-12-23T17:41:13Z Regulator9 joined #scheme 2015-12-23T17:58:17Z Regulator9 quit 2015-12-23T17:59:09Z Regulator9 joined #scheme 2015-12-23T18:00:08Z Regulator9 quit (Client Quit) 2015-12-23T18:00:44Z Regulator9 joined #scheme 2015-12-23T18:00:46Z mmc quit (Ping timeout: 240 seconds) 2015-12-23T18:05:10Z yrdz quit (Remote host closed the connection) 2015-12-23T18:05:23Z micmus joined #scheme 2015-12-23T18:12:54Z agumonkey quit (Quit: ZNC - http://znc.in) 2015-12-23T18:14:00Z agumonkey joined #scheme 2015-12-23T18:15:20Z jusss: one last question, http://community.schemewiki.org/?call-with-current-continuation , in (define (superfluous-computation do-other-stuff) , why can it do this (set! do-other-stuff (call/cc do-other-stuff))) 2015-12-23T18:16:27Z ggole quit 2015-12-23T18:17:28Z jusss: (hefty-computation superfluous-computation) , make superfluous-computation as a (lambda (k) ...) 2015-12-23T18:18:03Z jusss: make the parameter do-other-stuff in superfluous-computation as k 2015-12-23T18:18:28Z jusss: and (set! k (call/cc k)) I don't get it 2015-12-23T18:29:06Z DGASAU quit (Read error: Connection reset by peer) 2015-12-23T18:29:18Z jusss quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2015-12-23T18:29:37Z DGASAU joined #scheme 2015-12-23T18:54:59Z lritter quit (Remote host closed the connection) 2015-12-23T19:11:30Z teurastaja joined #scheme 2015-12-23T19:13:09Z teurastaja: any modern ai done in scheme nowadays? 2015-12-23T19:19:02Z teurastaja: #8051 2015-12-23T19:19:07Z teurastaja: oops 2015-12-23T19:25:12Z cemerick joined #scheme 2015-12-23T19:28:40Z newdan quit (Quit: Lost terminal) 2015-12-23T19:29:05Z Steverman quit (Ping timeout: 246 seconds) 2015-12-23T19:30:12Z Beluki joined #scheme 2015-12-23T19:31:00Z micmus quit (Ping timeout: 265 seconds) 2015-12-23T19:53:46Z sethalves quit (Remote host closed the connection) 2015-12-23T19:54:47Z developernotes quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-23T20:02:38Z sz0 quit (Quit: Bye.) 2015-12-23T20:08:17Z developernotes joined #scheme 2015-12-23T20:21:47Z nilg joined #scheme 2015-12-23T20:23:20Z micmus joined #scheme 2015-12-23T20:28:45Z micmus quit (Remote host closed the connection) 2015-12-23T20:31:22Z lambda-11235 quit (Quit: Bye) 2015-12-23T20:31:56Z teurastaja: rudybot: (ping) 2015-12-23T20:31:57Z rudybot: teurastaja: your sandbox is ready 2015-12-23T20:31:57Z rudybot: teurastaja: error: ping: undefined; cannot reference an identifier before its definition in module: 'program 2015-12-23T20:32:23Z cemerick quit (Ping timeout: 265 seconds) 2015-12-23T20:40:01Z pilne joined #scheme 2015-12-23T20:44:55Z joneshf-laptop quit (Ping timeout: 240 seconds) 2015-12-23T20:55:07Z wasamasa: teurastaja: all the marketable AI is done by number crunching and GPUs these days 2015-12-23T20:55:13Z wasamasa: teurastaja: you don't need scheme for that 2015-12-23T20:55:31Z wasamasa: teurastaja: C++ does just fine, same with python to make for a nicer experience around all the fast numerical code 2015-12-23T20:56:56Z teurastaja: wasamasa: i work on microcontrollers so i need minimalistic algorithms 2015-12-23T20:57:04Z wasamasa: lol 2015-12-23T20:57:16Z wasamasa: if you work on microcontrollers, good luck using anything else than C 2015-12-23T20:57:25Z wasamasa: oh and maybe forth if you're lucky 2015-12-23T20:57:38Z jackdaniel: microscheme 2015-12-23T20:58:03Z wasamasa: because being anything else than frugal with memory is a bad idea on these 2015-12-23T20:58:33Z Beluki: FreePascal is popular with micros here. 2015-12-23T20:59:01Z jackdaniel: https://github.com/ryansuchocki/microscheme for atmel 2015-12-23T21:00:23Z wasamasa: lol, they've got free! 2015-12-23T21:01:29Z wasamasa: they claim to have a tree-shaker which is nice 2015-12-23T21:01:57Z wasamasa: you wouldn't have that with CL unless you're using a commercial implementation 2015-12-23T21:02:44Z jackdaniel: cl isn't designed to play well with low-resource devices 2015-12-23T21:02:51Z Beluki: I think I would probably reach for s9fes on a microcontroller instead of microscheme. 2015-12-23T21:02:55Z davexunit: microscheme looks fun 2015-12-23T21:03:06Z davexunit: andy wingo wrote a garbage collector for atmel microcontrollers 2015-12-23T21:03:08Z wasamasa: pascal actually sounds like a fun alternative to plain old C 2015-12-23T21:03:09Z davexunit: IIRC 2015-12-23T21:03:12Z Beluki: Depends on memory I guess. 2015-12-23T21:03:42Z davexunit: not sure if it was ever intended for anything more than a fun hack 2015-12-23T21:04:05Z jackdaniel: there is also armpit for stm32 2015-12-23T21:04:17Z jackdaniel: http://armpit.sourceforge.net/ 2015-12-23T21:09:26Z gravicappa quit (Ping timeout: 240 seconds) 2015-12-23T21:09:35Z githogori quit (Ping timeout: 240 seconds) 2015-12-23T21:09:51Z teurastaja: anything under 1kB? 2015-12-23T21:10:11Z pilne: forth??? 2015-12-23T21:10:35Z wasamasa: forth!!! 2015-12-23T21:10:48Z jcowan joined #scheme 2015-12-23T21:11:09Z ASau joined #scheme 2015-12-23T21:11:16Z teurastaja: alright.... any quick bootstrapping tutorials to get started with forth in a week? 2015-12-23T21:11:35Z wolfcore quit (Ping timeout: 240 seconds) 2015-12-23T21:12:25Z jcowan: teurastaja: Do you understand reverse Polish notation? 2015-12-23T21:12:51Z teurastaja: jcowan: if i understand polish notation i should be fine 2015-12-23T21:13:12Z Menche joined #scheme 2015-12-23T21:13:21Z jcowan: Okay, so in Forth you do things like 1 2 + ., which means "push 1, push 2, add the top two, print" 2015-12-23T21:13:34Z jcowan: (the comma isn't part of the code) 2015-12-23T21:14:13Z teurastaja: got that part 2015-12-23T21:14:13Z jcowan: And you can define a name to be an (almost) arbitrary sequence of Forth words. 2015-12-23T21:14:51Z teurastaja: with : or ; i think? 2015-12-23T21:15:56Z developernotes quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-23T21:15:58Z teurastaja: then what? 2015-12-23T21:16:11Z pilne: that's forth in a nutshell 2015-12-23T21:16:36Z wasamasa: you define words, use these and mind the stack 2015-12-23T21:16:41Z teurastaja: i understand this part. how do you recurse? 2015-12-23T21:16:44Z wasamasa: sometimes you allocate something array-like 2015-12-23T21:17:09Z teurastaja: array-like? show me :) 2015-12-23T21:17:13Z wasamasa: recursing sounds like an irresponsible thing to do in forth 2015-12-23T21:17:31Z teurastaja: how to implement a scheme then? 2015-12-23T21:17:47Z wasamasa: you don't really want scheme on that thing 2015-12-23T21:17:55Z wasamasa: just write clean C or pascal or forth or whatever 2015-12-23T21:18:18Z wolfcore joined #scheme 2015-12-23T21:18:33Z teurastaja: the whole purpose is to write a minimalistic scheme on a 8051 of 1kB 2015-12-23T21:18:42Z wolfcore is now known as Guest30380 2015-12-23T21:19:51Z teurastaja: im sure there are ways to do that 2015-12-23T21:20:19Z pilne: that be way outta my league 2015-12-23T21:20:33Z teurastaja: my problem is how to keep track of reentrant continuations 2015-12-23T21:20:41Z teurastaja: for garbage collection 2015-12-23T21:21:08Z wasamasa: of course there's way to do that, but the result will hardly look like your typical scheme 2015-12-23T21:22:28Z teurastaja: doesnt matter. how do i garbage-collect continuations on say 512B of stack space? 2015-12-23T21:22:40Z wasamasa rolls eyes 2015-12-23T21:22:49Z teurastaja: lol what? 2015-12-23T21:22:49Z Regulator9 quit 2015-12-23T21:23:49Z wasamasa np: Skream & Example - Shot Yourself In The Foot Again 2015-12-23T21:24:45Z teurastaja: i just need a way to tell if a continuation is going to be reused but how? 2015-12-23T21:28:49Z developernotes joined #scheme 2015-12-23T21:31:21Z szgyg quit (Ping timeout: 265 seconds) 2015-12-23T21:31:26Z jcowan: : foo 1 2 + . ; defines foo to do what 1 2 + . does 2015-12-23T21:40:30Z teurastaja: i just figured i live near some of the best schemers (quebec, near montreal). who should i contact for advice near montreal? 2015-12-23T21:40:31Z badkins quit (Read error: Connection reset by peer) 2015-12-23T21:42:00Z Necrosporus_ joined #scheme 2015-12-23T21:44:37Z Necrosporus quit (Disconnected by services) 2015-12-23T21:44:40Z Necrosporus_ is now known as Necrosporus 2015-12-23T21:46:50Z ecraven: teurastaja: you can try a clever compiler to figure out whether a continuation is reused.. can be impossible to decide though 2015-12-23T21:47:23Z teurastaja: how do they do it? 2015-12-23T21:50:23Z teurastaja: theres marc feeley at the universite de montreal but isnt there someone at the universite laval? 2015-12-23T21:52:06Z fadein joined #scheme 2015-12-23T21:53:05Z mmc joined #scheme 2015-12-23T21:58:29Z Menche: can an anonymous lambda call itself? 2015-12-23T22:00:30Z mmc quit (Quit: Leaving.) 2015-12-23T22:00:48Z mmc joined #scheme 2015-12-23T22:04:03Z teurastaja: Menche: thats the basis of recursion 2015-12-23T22:06:04Z teurastaja: Menche: ((lambda (x) (x x)) (lambda (x) (x x))) 2015-12-23T22:07:57Z teurastaja: Menche: read the definition of letrec 2015-12-23T22:17:37Z badkins joined #scheme 2015-12-23T22:17:49Z n_blownapart joined #scheme 2015-12-23T22:18:31Z wildlander joined #scheme 2015-12-23T22:18:53Z n_blownapart: hi I don't see why so many basic functions such as member? need to be defined in drracket . Is that a thing with scheme or the drracket environment? thanks 2015-12-23T22:19:15Z Menche: I know racket is a heavily extended scheme 2015-12-23T22:19:56Z jcowan: n_blownapart: member has been part of the Scheme standard since day one, nearly. Scheme may be a minimal programming language, but its standard library is not minimal at all, nor meant to be. 2015-12-23T22:20:52Z n_blownapart: Menche: jcowan sorry Im a noob. does that mean that many functions would be excluded or included in an environment like drracket? 2015-12-23T22:22:05Z jcowan: Included. 2015-12-23T22:22:20Z Menche: the scheme standard (R5RS at least) doesn't have support for things like networking and graphics and file access 2015-12-23T22:22:25Z Menche: most implementations add their own 2015-12-23T22:22:38Z Menche: racket in particular comes with all batteries included 2015-12-23T22:22:40Z Menche: a ton of extensions 2015-12-23T22:22:41Z jcowan: Indeed, and incompatibly. Scheme has probably more implementations than any other language in use today 2015-12-23T22:23:05Z jcowan: None of them is dominant (unlike CPython or GHC or gcc) 2015-12-23T22:23:24Z jcowan: But I'm working on extending compatibility, as are many other people. 2015-12-23T22:23:46Z Menche: I know R7RS Small has standardized a module system 2015-12-23T22:24:09Z spew quit (Quit: leaving) 2015-12-23T22:25:36Z davexunit quit (Quit: Later) 2015-12-23T22:26:41Z mmc quit (Ping timeout: 276 seconds) 2015-12-23T22:26:42Z jcowan: Just so. R7RS-large will add many modules, as many as the WG chooses to vote in. I've been working behind the scenes preparing for the first vote. 2015-12-23T22:27:06Z jcowan: http://trac.sacrideo.us/wg/wiki/RedDocket is the docket for it 2015-12-23T22:27:11Z jcowan: not everything is quite ready yet 2015-12-23T22:27:36Z Menche: didn't R6RS include a lot of modules, and meet much resistance because of it? 2015-12-23T22:28:36Z n_blownapart: I have the environment set to #lang scheme and 'determine language by code' (not verbatim, I'm not in front of the right machine now.) still, simple functions like null? and member? need to be defined. the only language I have a wee bit of experience with is ruby, which has all of these... 2015-12-23T22:29:06Z Menche: ? 2015-12-23T22:29:26Z jcowan: member is spelled without a ?, because it can return values other than #t and #f 2015-12-23T22:30:18Z jcowan: You should probably set to #lang racket 2015-12-23T22:30:26Z jcowan: unless you urgently care about portability 2015-12-23T22:30:44Z jcowan quit (Quit: Leaving) 2015-12-23T22:30:58Z n_blownapart: I 'm following the little schemer , in which the puzzles are calling for member? jcowan the environment is all set up but I need to define these. hmm #lang racket ok. also.... 2015-12-23T22:32:15Z n_blownapart: also under edit, the last selection on the pulldown menu is modes, which defaults to 'racket mode' apparently. 2015-12-23T22:32:56Z n_blownapart: I just want to follow the tutorial. Its odd. 2015-12-23T22:33:56Z n_blownapart: the book doesn't explain how to write the code precisely. 'quote' or " ' " is not explained for designating arguments. 2015-12-23T22:34:15Z Menche: designating arguments? 2015-12-23T22:35:10Z n_blownapart: such as (map odd? '(2 3 4 5 6 7)) 2015-12-23T22:35:32Z teurastaja: member definition from srfi 1: (find-tail (lambda (elt) (equal? x elt)) lis) 2015-12-23T22:36:28Z teurastaja: find-tail can be implemented with drop-while 2015-12-23T22:37:08Z n_blownapart: what is elt there teurastaja ? 2015-12-23T22:37:39Z teurastaja: elt is x y or z or elephant or mustard :) 2015-12-23T22:38:26Z teurastaja: its the parameter of an anonymous function used to recur throught that list 2015-12-23T22:38:48Z teurastaja: call it whatever you want 2015-12-23T22:38:57Z n_blownapart: ok teurastaja got that. so... 2015-12-23T22:39:23Z n_blownapart: is that member or member? 2015-12-23T22:39:23Z teurastaja: have you seen what apply does? 2015-12-23T22:39:42Z n_blownapart: *member? ? 2015-12-23T22:39:55Z teurastaja: theres no ? in member 2015-12-23T22:40:06Z teurastaja: because the value is not a boolean 2015-12-23T22:40:25Z teurastaja: though it can be 2015-12-23T22:40:55Z n_blownapart: very strange. sorry I need to figure out what's going on with the book. I haven't gotten comfortable with the protocol of the book. thanks teurastaja et al. 2015-12-23T22:41:20Z teurastaja: actually you should study what map and apply do 2015-12-23T22:41:37Z n_blownapart: map I generally understand from ruby.. 2015-12-23T22:41:41Z teurastaja: they are closely related 2015-12-23T22:42:00Z n_blownapart: << obviously not a programmer. 2015-12-23T22:42:35Z teurastaja: well you recursively apply a lambda to a singly chained list 2015-12-23T22:42:49Z teurastaja: one argument at a time 2015-12-23T22:44:09Z n_blownapart: could you elaborate or give a brief example of what you have in mind? 2015-12-23T22:44:27Z teurastaja: the difference with member is that member returns the rest of the list once it found a value that is true 2015-12-23T22:45:00Z teurastaja: map doesnt accumulate that "rest of the list" 2015-12-23T22:45:38Z teurastaja: i mean it does but it doesnt return it, it just applies a function to every element 2015-12-23T22:45:54Z teurastaja: returning the new list 2015-12-23T22:46:44Z n_blownapart: I do understand member and it recursive step at the end as per the little schemer's example. it is cool. ok got that re: map. thanks teurastaja 2015-12-23T22:46:49Z n_blownapart: its* 2015-12-23T22:49:59Z developernotes quit (Quit: Textual IRC Client: www.textualapp.com) 2015-12-23T22:53:48Z teurastaja: (define (member x ls eq) 2015-12-23T22:53:50Z teurastaja: (let f ([ls ls]) 2015-12-23T22:53:51Z teurastaja: (let ([y (car ls)]) 2015-12-23T22:53:53Z teurastaja: (cond [(null? ls) #f] 2015-12-23T22:53:54Z teurastaja: [(eq x y) ls] 2015-12-23T22:53:56Z teurastaja: [else (f (cdr ls))])))) 2015-12-23T22:54:43Z teurastaja: n_blownapart: understand this? 2015-12-23T22:56:51Z Menche: think I figured out letrec 2015-12-23T22:57:05Z n_blownapart: one sec teurastaja .. 2015-12-23T22:57:50Z Menche pokes at fibonacci function for practice 2015-12-23T22:58:24Z Menche: made a more efficient function than the most obvious solution http://codepad.org/95BXHTlC 2015-12-23T22:59:00Z n_blownapart: not really let me paste something teurastaja .. Menche did it in ruby but it was over a year ago. I broke my hand and gave up learning to program... latest stab at it here after someone in the C irc convinced me to learn scheme first. 2015-12-23T22:59:45Z n_blownapart: I *suck* at ruby so figured I would try a functional lang. 2015-12-23T22:59:54Z Menche: what exactly are you trying to do? 2015-12-23T23:00:58Z n_blownapart: I'm trying to really understand how to program ...at one point in my life I was good at math. not just be a hack for a job. it's a long way off. 2015-12-23T23:02:06Z Menche: can't really explain how to program all at once; choose various specific problems and learn to solve them 2015-12-23T23:02:43Z Menche: the fibonacci sequence is sort of the "hello world" for functional programming 2015-12-23T23:03:39Z teurastaja: well lambda calculus shows that given abstraction, concretisation and symbols for your variables you can build anything 2015-12-23T23:04:40Z n_blownapart: this is what I have so far from the book. it says before this def: "this is the function member?" http://pastie.org/10649997 2015-12-23T23:04:41Z teurastaja: abstraction: lambda, concretisation: lambda application, symbol: bindings 2015-12-23T23:04:42Z Menche probably isn't qualified to give advice in here, being a scheme beginner himself :P 2015-12-23T23:05:41Z Menche: I know C, and have done a little bit of playing with things like Python and Go 2015-12-23T23:06:05Z Menche: learning Scheme is my current endeavor 2015-12-23T23:06:32Z teurastaja: basically lambda calculus is the functional turing machine 2015-12-23T23:06:49Z n_blownapart: essentially, I get the recursion at the end. the book is good at explaining the logic, but it is almost written to be done with pencil and paper. strange, I must be missing something. 2015-12-23T23:07:29Z n_blownapart: teurastaja: what about scheme as a good first language to learn oop eventually or scala or the like? 2015-12-23T23:07:48Z n_blownapart: still indecisive about where to start... 2015-12-23T23:08:04Z Menche hasn't *completely* decided on an implementation to use 2015-12-23T23:08:15Z Menche: racket, chicken, guile, gauche… 2015-12-23T23:08:21Z teurastaja: i suggest gauche in r7rs mode 2015-12-23T23:08:23Z Menche: bigloo, gambit 2015-12-23T23:08:30Z Menche: I am currently on gauche 2015-12-23T23:08:47Z teurastaja: like this?: gosh -r7 2015-12-23T23:09:04Z Menche: oh, I wasn't using -r7 2015-12-23T23:09:31Z Menche: heh, this program I was writing is apparently only valid in r5rs 2015-12-23T23:09:57Z Menche: gauche seems to be the most, uh, default implementation 2015-12-23T23:10:02Z n_blownapart: what about for the perplexed beginning hoping to earn a good living and to avoid web programming like rails etc. (don't like it). 2015-12-23T23:10:18Z Menche: doesn't have a ton of extensions like chicken or especially racket 2015-12-23T23:11:41Z n_blownapart: in short, give me the best pedagogical approach for a self-learner; opinions welcome 2015-12-23T23:11:43Z Menche: what is changed in the r7rs syntax that is invalid here? 2015-12-23T23:11:47Z Menche: http://codepad.org/95BXHTlC 2015-12-23T23:12:38Z Menche: something to do with define? 2015-12-23T23:12:39Z n_blownapart: did anyone see the paste? I guess in the book we are defining member? from scratch here? http://pastie.org/10649997 2015-12-23T23:13:00Z Menche: I'm not far enough along to parse that fully 2015-12-23T23:13:34Z Menche: I'm just about to get into manipulating lists with cons, car, cdr, etc. 2015-12-23T23:19:56Z n_blownapart: teurastaja: would really appreciate elaboration on this : " well lambda calculus shows that given abstraction, concretisation and symbols for your variables you can build anything". 2015-12-23T23:20:49Z teurastaja: (define (member x ls eq) 2015-12-23T23:20:51Z teurastaja: (let f ([ls ls] [y (car ls)]) 2015-12-23T23:20:52Z teurastaja: (and (pair? ls) 2015-12-23T23:20:54Z teurastaja: (if (eq x y) ls 2015-12-23T23:20:55Z teurastaja: (let ([ls (cdr ls)]) 2015-12-23T23:20:57Z teurastaja: (f ls (car ls))))))) 2015-12-23T23:22:00Z n_blownapart: will ponder for days to come . thanks teurastaja ! 2015-12-23T23:22:10Z n_blownapart: and thanks Menche ! 2015-12-23T23:22:48Z teurastaja: n_blownapart: most of us are self-learners. Welcome to freenode 2015-12-23T23:24:09Z n_blownapart: that code is beyond me and I don't see the recursive element at the end .. teurastaja thanks pax. 2015-12-23T23:24:25Z pilne left #scheme 2015-12-23T23:24:29Z teurastaja: which part? 2015-12-23T23:25:15Z n_blownapart: well so far the little schemer finishes a define with itself as in my paste with member? called last. 2015-12-23T23:25:21Z n_blownapart: teurastaja: ^ 2015-12-23T23:26:06Z daviid quit (Ping timeout: 240 seconds) 2015-12-23T23:26:23Z n_blownapart: i.e. I began thinking the whole language was like that. 2015-12-23T23:28:00Z n_blownapart: if I could belabor this to get it straight: the member? definition I pasted is not the core lang. but written for teaching purposes I assume... 2015-12-23T23:28:32Z teurastaja: but which part of my code is of course 2015-12-23T23:28:43Z teurastaja: sorry mixed 2 sentences 2015-12-23T23:28:59Z teurastaja: which part of my code is obscure to you? 2015-12-23T23:30:17Z teurastaja: of course its for educational purposes. schemes power relies on minimalism. you can do everything with functions 2015-12-23T23:30:26Z joneshf-laptop joined #scheme 2015-12-23T23:30:56Z teurastaja: there are many ways of implementing the same thing 2015-12-23T23:30:57Z n_blownapart: I'm not that far along with all the syntax, ls etc. the book starts off with car, cdr, lat? cond and lambda, else and a few others. your code looks familiar only in regards to ruby. 2015-12-23T23:31:11Z n_blownapart: hmm, many ways like ruby.... 2015-12-23T23:32:27Z teurastaja: scheme is a lexically scoped function/list of functions/lists 2015-12-23T23:32:47Z wasamasa: you mean, ruby is somewhat like scheme :P 2015-12-23T23:33:09Z teurastaja: simpler than ruby 2015-12-23T23:33:43Z n_blownapart: no I just recognize similarities wasamasa since I learned the basic ruby syntax a while back. 2015-12-23T23:34:14Z wasamasa: ruby's syntax is pretty much the opposite of scheme 2015-12-23T23:34:16Z n_blownapart: I meant many ways to do one thing as ruby informs us. 2015-12-23T23:35:01Z n_blownapart: its bloody hard in any case. I need a live tutor seriously. 2015-12-23T23:35:31Z wasamasa: such is the way of programming 2015-12-23T23:35:49Z n_blownapart: onward with the book .. thanks everyone more drama later. 2015-12-23T23:36:34Z teurastaja: the only thing you have to understand in scheme is how the function/parameter-passing-style syntax enables you to have first-class control over the program flow and that is continuations 2015-12-23T23:37:49Z n_blownapart: ok sounds peachy. hoping that I don't overTax the good graces of the chatroom. 2015-12-23T23:40:23Z joneshf-laptop quit (Ping timeout: 246 seconds) 2015-12-23T23:40:30Z teurastaja: its the only "obscure" scheme construct. the rest of it is about passing functions/lists as parameters and applying them later to other functions/parameters when you like 2015-12-23T23:41:15Z n_blownapart: the parameter-passing-style means that at the end of each recursion, often the cdr is reduced by one atom /element until there is a resolution ? teurastaja 2015-12-23T23:43:26Z n_blownapart: ie. a resolution, a return or a boolean value returned ? 2015-12-23T23:43:39Z teurastaja: resolution? 2015-12-23T23:43:59Z n_blownapart: just generally, for the program to be resolved. sorry. 2015-12-23T23:44:29Z n_blownapart: I was reading where that term is used from the sicp I believe. 2015-12-23T23:44:40Z teurastaja: resolved? you mean applied? 2015-12-23T23:45:07Z n_blownapart: yeah, just generally the application. 2015-12-23T23:45:23Z teurastaja: im confused sorry 2015-12-23T23:46:05Z n_blownapart: I just mean the program terminates with a value returned. 2015-12-23T23:46:19Z pierpa: until you arrive at a base case? 2015-12-23T23:46:49Z teurastaja: yes and it returns to the saved environment 2015-12-23T23:46:59Z n_blownapart: pierpa: or a boolean 2015-12-23T23:47:25Z pierpa: a base case means a case where there's no need to recur further 2015-12-23T23:47:37Z teurastaja: environment is a list of ('symbol . value) pairs 2015-12-23T23:48:05Z pierpa: no. environment is an abstract concept 2015-12-23T23:48:28Z pierpa: a concrete implementation could implement it in many different ways 2015-12-23T23:48:52Z n_blownapart: holy smokes .. 2015-12-23T23:48:54Z teurastaja: its the list of variables available at a moment in computations 2015-12-23T23:49:11Z n_blownapart: it is the lexical scope I guess 2015-12-23T23:49:16Z teurastaja: yes 2015-12-23T23:50:07Z n_blownapart: it is fascinating , I love how the program goes through recursion and calls its own named function at the end. how is it done in teurastaja 's example , or is it? 2015-12-23T23:50:23Z teurastaja: its not 2015-12-23T23:50:47Z n_blownapart: there is no base case, it's not recursive.. 2015-12-23T23:50:56Z teurastaja: are you comfortable with let? 2015-12-23T23:51:44Z teurastaja: the base case is the and case 2015-12-23T23:52:05Z n_blownapart: teurastaja: let in ruby just sets some limitation on a case statement 2015-12-23T23:52:27Z n_blownapart: "I hereby declare" 2015-12-23T23:52:29Z teurastaja: if its not a pair it assumes its an empty list 2015-12-23T23:52:53Z teurastaja: thus returns #f 2015-12-23T23:53:17Z n_blownapart: is that why null? is the first commandment in the little schemer ? 2015-12-23T23:53:54Z n_blownapart: ie always write null? as the first line of a definition.. 2015-12-23T23:54:02Z teurastaja: i dont know those commandments 2015-12-23T23:54:28Z n_blownapart: ok I think its related. 2015-12-23T23:55:30Z n_blownapart: I really appreciate it everyone. I have hit a saturation point . thanks kindly I'm going to study the log here. 2015-12-23T23:56:32Z teurastaja: lol youre welcome 2015-12-23T23:57:18Z n_blownapart: teurastaja: did you mean above that "the base case is 'let and case' .. is that a typo? 2015-12-23T23:59:16Z Necrosporus: What do you think about The Little Schemer and SICP? If I could understand latter, would I benefit from former? 2015-12-23T23:59:49Z n_blownapart: I think what was meant is that 'let' sets a base case to be reached...