00:05:22 -!- MrFahrenheit [~RageOfTho@cable-77-221-21-70.dynamic.telemach.ba] has quit [Read error: Operation timed out] 00:07:38 -!- Blkt [~user@82.84.188.5] has quit [Read error: Connection reset by peer] 00:08:49 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Read error: Operation timed out] 00:15:19 -!- francisl [~flavoie@bas6-montreal45-2925066756.dsl.bell.ca] has quit [Quit: francisl] 00:19:59 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 00:41:53 -!- cdidd [~cdidd@95-28-15-76.broadband.corbina.ru] has quit [Remote host closed the connection] 00:53:22 -!- masm1 [~masm@bl17-197-119.dsl.telepac.pt] has quit [Quit: Leaving.] 01:00:21 dnolen [~user@cpe-74-64-61-245.nyc.res.rr.com] has joined #scheme 01:00:35 jcowan [~John@mail.digitalkingdom.org] has joined #scheme 01:03:08 -!- mmc1 [~michal@178-85-56-58.dynamic.upc.nl] has quit [Ping timeout: 252 seconds] 01:16:02 what is the name of racket's init file? 01:17:56 ah .racketrc 01:21:48 -!- hiroaki [~hiroaki@77-20-78-82-dynip.superkabel.de] has quit [Ping timeout: 245 seconds] 01:44:46 -!- gffa [~unknown@unaffiliated/gffa] has quit [Quit: sleep] 02:05:10 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 02:06:14 -!- spiderweb [~user@unaffiliated/lcc] has quit [Ping timeout: 256 seconds] 02:30:36 -!- amgarchIn9 [~amgarchin@p4FD60F6F.dip0.t-ipconnect.de] has quit [Ping timeout: 256 seconds] 02:34:43 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving] 02:35:07 -!- tertl3 [~William@108-85-16-151.lightspeed.gnvlsc.sbcglobal.net] has quit [Ping timeout: 246 seconds] 02:42:17 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 265 seconds] 02:42:52 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 02:48:20 -!- ft [efftee@shell.chaostreff-dortmund.de] has quit [Ping timeout: 260 seconds] 02:50:23 ft [efftee@shell.chaostreff-dortmund.de] has joined #scheme 02:51:44 William [~William@108-85-16-151.lightspeed.gnvlsc.sbcglobal.net] has joined #scheme 02:52:08 -!- William is now known as Guest65498 03:09:42 -!- ft [efftee@shell.chaostreff-dortmund.de] has quit [Ping timeout: 256 seconds] 03:14:20 -!- githogori [~githogori@c-69-181-111-195.hsd1.ca.comcast.net] has quit [Read error: No route to host] 03:16:29 ft [efftee@shell.chaostreff-dortmund.de] has joined #scheme 03:25:24 spiderweb [~user@unaffiliated/lcc] has joined #scheme 03:38:15 amgarchIn9 [~amgarchin@p4FD60F6F.dip0.t-ipconnect.de] has joined #scheme 03:47:56 -!- youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has quit [Quit: Possible bed-time... o/] 03:57:44 -!- bipt [~bpt@cpe-071-070-253-241.nc.res.rr.com] has quit [Ping timeout: 250 seconds] 04:11:25 youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has joined #scheme 04:19:14 alexei [~amgarchin@p4FD61C96.dip0.t-ipconnect.de] has joined #scheme 04:20:54 -!- amgarchIn9 [~amgarchin@p4FD60F6F.dip0.t-ipconnect.de] has quit [Read error: Operation timed out] 04:22:55 will I be able to write a scheme interpreter after completing the little schemer? 04:23:00 -!- pjb [~t@cust-seco21th2-46-193-64-247.wb.wifirst.net] has quit [Ping timeout: 264 seconds] 04:26:57 Without doubt. 04:27:04 *jcowan* says that despite never having completed it. 04:27:17 If they don't have to be fast, Scheme interpreters in Scheme just aren't hard. 04:27:27 sweet 04:28:24 You can even write a Javascript interpreter! Or a Fortran interpreter! 04:28:48 that's so cool! 04:29:25 Isn't the last chapter of TLS writing a Scheme interpreter? 04:33:48 didn't realize that.. cool 04:36:22 But JavaScript and Fortran have many ugly details which Scheme doesn't. 04:40:04 how about the impossible? is it theoretically possible to write a perl interpreter using scheme? 04:40:07 j/k 04:46:46 -!- alexei [~amgarchin@p4FD61C96.dip0.t-ipconnect.de] has quit [Quit: Konversation terminated!] 04:50:51 thanks jcowan 04:50:55 :-) 04:50:57 -!- spiderweb [~user@unaffiliated/lcc] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 04:51:15 TLS? 04:51:45 The Little Schemer 04:52:07 Ah. 04:55:13 bipt [~bpt@cpe-076-182-071-114.nc.res.rr.com] has joined #scheme 04:58:06 -!- Guest65498 is now known as tertl3 05:18:53 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Ping timeout: 245 seconds] 05:21:49 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 05:28:35 protist [~protist@222.153.223.101] has joined #scheme 05:35:10 arbn [~arbn@auriga.kiwilight.com] has joined #scheme 05:49:47 spiderweb [~user@unaffiliated/lcc] has joined #scheme 05:52:39 so which scheme implementations should I choose for which kind of projects? 05:55:58 -!- protist [~protist@222.153.223.101] has quit [Ping timeout: 245 seconds] 06:00:59 um 06:01:03 racket 06:01:07 case close 06:02:07 protist [~protist@222.153.223.101] has joined #scheme 06:12:02 spiderweb: Racket and Chicken are the ones I pay attention to. Chicken produces small executables, provides C interop, has good compiled performance, and there are a lot of modules (eggs) available. Racket is also a nice language, with a lot of batteries included and an AWESOME macro system. 06:12:26 Nisstyre [~yours@oftn/member/Nisstyre] has joined #scheme 06:13:11 spiderweb: If you're reading SICP, mit-scheme is good for that, but that's about all it's good for. :P 06:14:36 -!- protist [~protist@222.153.223.101] has quit [Ping timeout: 264 seconds] 06:18:43 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Remote host closed the connection] 06:19:43 -!- jao [~user@pdpc/supporter/professional/jao] has quit [Ping timeout: 245 seconds] 06:23:03 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 06:23:27 -!- wbooze [~wbooze@xdsl-78-35-156-91.netcologne.de] has quit [Ping timeout: 260 seconds] 06:24:26 -!- youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has quit [Quit: :-I] 06:25:56 araujo [~araujo@190.73.45.171] has joined #scheme 06:25:56 -!- araujo [~araujo@190.73.45.171] has quit [Changing host] 06:25:56 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 06:26:55 spiderweb, arbn: Chicken and Chibi are my favorites. I confess to a personal prejudice against Racket, though I can't deny it's a good, sound, well-written Scheme. 06:27:29 $ schemes 06:27:29 For Scheme, try racket, gosh, mit-scheme, gsi -:s, csi -R numbers, bigloo, scheme48, scsh, guile, kawa --output-format readable-scheme, sisc, chibi -Mscheme.base, scm -m, petite, vicare, larceny, ypsilon, mosh, iron, nexj, stklos, ksi, sscm, shoe, tinyscheme, s9, dream, rs, s7, bdc, xlisp, rep, schemik, elk, umb-scheme, vx-scheme, oaklisp, llava, sxi, sizzle, spark, /opt/femtolisp/femtolisp/flisp, dfsch-repl, inlab, ol 06:29:23 jcowan: I'm curious... what's the source of your prejudice against Racket? 06:29:27 Schemes I no longer do anything with: Ikarus (displaced by Vicare), MScheme, Bus 06:31:26 It's hard to say: it truly is irrational, and I can and I do recommend it to people who ask which-Scheme? questions. 06:32:00 Perhaps it's that I saw Chicken grow, and feel like I have a handle on it, whereas Racket (or PLT) always seemed like a vast universe beyond the universe, too big for me to really grasp. But I'm just speculating. 06:32:08 Who can account for their preferences in ice cream? 06:33:13 I like Guile 2 very much, but it's so hard to build from source I won't be able to recommend it until mainstream distros no longer have only Guile 1.x. 06:33:21 (Not so much hard as tedious.) 06:33:58 I'd like to like scsh much more than I do. 06:34:36 I'm fond of Owl Lisp (ol), but I'd never recommend it to anyone as My First Scheme, because it has no mutation. 06:34:47 protist [~protist@222.153.223.101] has joined #scheme 06:35:11 jcowan: Interesting. Especially about Owl Lisp. 06:35:26 Scheme 9 is a beautiful thing, but too old-fashioned to be a good working Scheme any more (it's R4RS). 06:35:49 I'm not even mentioning Stalin above; it trades compile speed for execution speed in a way that is, well, awesome/horrific. 06:36:07 It's occurred to me "Wow. It would be really fun to have a purely functional Scheme", and I guess ol is that. 06:36:10 Oaklisp is also intellectually ingenious, but it's R3RS. 06:39:10 what scheme do you use jcowan 06:39:22 As I say, Chicken and Chibi. 06:39:54 As a developer. As a standards geek, I use all 45 to test things 06:40:13 See http://trac.sacrideo.us/wg/wiki/ImplementationContrasts 06:40:16 do either of them have syntax-case? 06:40:50 No, as it happens. I am definitely not a fan of syntax-case in R6RS mode, and personally I don't write low-level macros at all, or even complex syntax-rules ones. 06:41:06 Chicken has ER and Chibi has SC and ER. 06:41:37 "no neither has syntax-case but chibi has syntax-case" ? 06:41:41 Hmm. Does anyone in here use Quack + Emacs? It's not finding my mit-scheme binary anymore... hm. 06:41:45 oh sc = syntax closures 06:41:49 I'm a devotee of jrm's Syntax-Rules Primer for the Merely Eccentric, but haven't needed to get past the middle. 06:41:52 SC = syntactic closures 06:42:05 -!- dnolen [~user@cpe-74-64-61-245.nyc.res.rr.com] has quit [Remote host closed the connection] 06:42:42 ive never used anything but syntax-case to write procedural macros but i was under the impression it was the only reasonable system for doing so 06:42:55 Infinite are the arguments of mages. 06:43:07 thats helpful 06:43:31 I favor simplicity. Syntax-rules is simple, though you can do complex things with it. 06:43:42 Syntax-case can be made simple, but usual presentations are baroque. 06:43:45 YMMV. 06:45:05 sounds like a similar argument for not using c++ 06:45:06 -!- notdan_ is now known as notdan 06:45:10 -!- notdan [~h@rootshell.me] has quit [Changing host] 06:45:10 notdan [~h@unaffiliated/notdan] has joined #scheme 06:45:15 (and using C instead) 06:45:20 In particular, I am unimpressed by macros like aif, that dirty the lexical scope with random names like "it". Is (aif x1 x2 x3) really better than (aif it x1 x2 x3)? 06:45:34 Oh, I am *really* prejudiced against C++. 06:45:36 well with syntax-parameters its not so bad 06:46:16 eli [~eli@winooski.ccs.neu.edu] has joined #scheme 06:46:16 -!- eli [~eli@winooski.ccs.neu.edu] has quit [Changing host] 06:46:16 eli [~eli@racket/eli] has joined #scheme 06:47:15 C++ is the language of Trust Nobody, Not Even Yourself. There are 50 ways to do anything, 49 of which are wrong, including the simple and obvious way. C++ culture is obsessed with exception safety when there are 1000 instances of undefined behavior in the spec. I could go on but won't. 06:47:18 i find it interesting that languages have (already) reached a point of complexity that makes them unappealing to people 06:47:44 jcowan: (aif it x1 x2 x3) is a hygienic myth that doesn't work in practice. http://barzilay.org/misc/stxparam.pdf 06:47:44 when language research is just adding more and more things 06:47:50 i mean what do you think of scala? its huge too 06:48:03 I have no opinion of it; it is too big for me. 06:48:42 I look forward to reading that paper, eli. 06:50:40 jcowan: See section 2.2 for that myth, and the code that demonstrates how it breaks; but the rest of it would be useful too. 06:51:30 I would like to like syntax-case, as I would like to like scsh. 06:52:01 -!- wingo [~wingo@fanzine.igalia.com] has quit [Ping timeout: 246 seconds] 06:52:43 you should try it in racket 06:52:54 Paper first, farting about later. That's just me. 06:54:46 JavaScript: The Good Parts is my idea of a nice language hiding inside an ugly one. 06:55:15 -!- jaimef [jaimef@dns.mauthesis.com] has quit [Ping timeout: 276 seconds] 06:55:32 But yes, you get no academic kudos for making things smaller. 06:56:20 In any case, it is 0200 local time, and I am still recovering from surgery, so I will go to bed. 06:56:27 -!- jcowan [~John@mail.digitalkingdom.org] has quit [Quit: Leaving] 06:58:22 eli: Perhaps I'm being dense, but I read section 2.2 and I don't see what the myth is, nor the code that demonstrates how it breaks. 07:00:04 FWIW, I think syntax parameters are a very good thing, but I don't see what's broken about (aif it x1 x2 x3). 07:00:47 What's the myth, and what breaks? 07:01:32 mark_weaver: because `while' uses `aif', it needs to pass `it', and the user ends up writing (while abort it ...real code...) -- you have to specify an `it' even if you don't use it. 07:01:43 -!- protist [~protist@222.153.223.101] has quit [Ping timeout: 260 seconds] 07:02:02 And if you want to write a macro that expands to a while, your macro needs to take an `it' to pass along too. 07:02:17 protist [~protist@222.153.223.101] has joined #scheme 07:02:39 In short, it's exactly the same problem that you get if you don't have parameters and you end up passing the values via arguments. 07:03:43 Well, presumably one could write a version of 'while' that does not take an 'it' argument, but instead uses an internal one. 07:04:18 (though of course then users of that 'while' would not be able to use 'it' within the body) 07:05:52 e.g. (define-syntax-rule (while abort test body ...) (forever abort (aif it test (begin body ...) (abort)))) 07:06:42 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Ping timeout: 264 seconds] 07:06:45 mark_weaver: Well, see the examples there for what can't be done; other than that, just try to write a bunch of these things and use them IRL. 07:07:33 (But I'd warn you before you start that -- note that these macros are never used in practice for more than toy examples. At least not in a layered way where other macros expand to `aif' etc.) 07:07:58 although I acknowledge that parameters are often the best solution, they do not compose well with other programming practices such as streams. 07:08:41 I avoid parameters whenever I can for that reason. there's too much possibility of them propagating to places where they really aren't appropriate. 07:09:02 What do you mean by "streams"? 07:09:06 lazy streams. 07:09:59 In that case your objection has nothing to do with streams -- it's the fact that parameters are mostly a dynamic scope thing, which doesn't play nicely with laziness for the obvious reasons. 07:10:00 where what you probably want is the parameters in effect when the stream was created to be used to generate the rest of the stream, but instead the parameters in effect where the stream happens to be forced will be used instead. 07:10:09 jewel [~jewel@105-236-20-105.access.mtnbusiness.co.za] has joined #scheme 07:10:41 right, dynamic scoping is very problematic. sometimes it is needed, but I avoid them whenever I possibly can. 07:10:50 s/them/it/ 07:10:51 In any case, the problem that parameters solve is very similar to the one they do in syntax; the dynamic aspect is irrelevant for that. 07:11:16 granted, it seems to me that syntax parameters do not suffer from that problem. 07:11:26 The point is that you want to parameterize some piece of code, and without parameters you cannot do that without refactoring code and adding arguments. 07:12:52 To really get rid of the dynamic issue, you can think about some system where you actually do transfer an implicit object with all current parameter values -- grabbing that object as part of closures makes things more well behaved, and that clarifies the problem and its solution without talking about dynamic extents. 07:13:48 (For example, see Racket's `current-parameterization', but again, this is only to show that it's irrelevant for the problem of passing extra values through a call chain.) 07:14:47 yes, I've considered such a solution. if we made dynamic environments first-class, had a way to capture the current dynamic environment, and a way to evaluate an expression within an explicitly-specified dynamic environment, that might be useful.. 07:16:17 Regardless, the basic *problem* is that without parameters you need to thread extra arguments through function calls -- including functions on the way that have nothing to do with the parameters. 07:16:29 And you get the same problem with the hygienic `aif' etc. 07:16:33 though I wonder if there are cases where, when forcing a lazy stream, you want some parameters to be taken from the dynamic environment from when the stream was created, but some other parameters from where the stream is being forced. 07:16:49 eli: yes, I acknowledge that there are cases where they are truly the best solution. 07:17:25 but when I see people use them unnecessarily, merely to save themselves some work, I tend to speak up against that practice. 07:17:46 -!- protist [~protist@222.153.223.101] has quit [Ping timeout: 265 seconds] 07:18:40 often it may be better to pass down an explicit context, which could contain an extensible set of parameter-like values. 07:19:18 (i.e. once you've passed down an explicit context, then you can add more values to the context without changing most of the code) 07:20:02 mark_weaver: Three functions by different authors, with a call chain of A -> B -> C; the C author adds some customization for a feature F which A wants to use; without parameters, C is modified to take an F argument, A wants to use it by since it's not calling C directly B is forced to add an F input and pass it along to C even though it has nothing to do with that feature. 07:21:46 eli: how many times do I have to repeat: "yes, I acknowledge that there are cases where they are truly the best solution." ? 07:22:26 I'm just saying that I avoid them when it's not too painful to do so, for the sake of things like lazy streams where they will propagate to places where they aren't appropriate. 07:22:31 How many times do I have to repeat that this is the only thing that is needed, and that the objections you have to the dynamic extent is irrelevant? 07:23:57 what is the only thing that is needed? 07:24:59 Admitting the problem of passing extra values through a call chain that is not under your control. 07:25:29 yes, I understand that problem, and I understand that parameters are the only viable solution I know of. 07:25:35 Whether you solve it via dynamic-extent parameters or customization objects that are part of all calls is irrelevan. 07:27:14 no, there's a difference, because dynamic-extent parameters will propagate to delayed evaluations that are forced, whereas explicit "context" parameters will not. 07:27:28 *eli* sighs 07:27:48 let me give you a specific example that has worried me. 07:27:54 Yes, there is a difference, it's the problem that I'm talking about. 07:28:06 I know what you're talking about with laziness, and it is irrelevant. 07:28:42 I've implemented (but not yet posted) arbitrary-precision floats to Guile. 07:29:16 This raises the question of what precision to use when an inexact result is produced by a numeric operation that takes only exact arguments, e.g. (sqrt 2) 07:30:09 the only sane solution that I can think of is to use a dynamic-extent parameter to specify the precision in these cases. 07:31:24 but setting such a parameter is problematic because in the case of lazy streams, it will propagate to places where it doesn't belong, and change the precision of computations that you might not want changed. 07:31:41 I know what you're talking about with laziness, and it is irrelevant. 07:31:53 why do you say it is irrelevant? 07:33:23 Because I'm talking about the problem, not the implementation details of the solution. It doesn't matter if it's done through parameters, a customization object, closing over them or not, or even just using environment variables -- the problem that these all solve is the problem that the hygienic `aif' runs into. 07:34:35 .. "the basic *problem* is that without parameters you need to thread extra arguments through function calls -- including functions on the way that have nothing to do with the parameters" reminds me of "State and modularity" by Peter Van Roy in 2003-10-22 at 07:36:10 (Yes, add "monads" to the above pile of solutions.) 07:36:17 *ski* ponders an alternate solution where `B' is expressed as a module functor that takes a `C' as parameter, and `A' invokes this `B' functor on the actual `C' .. 07:36:37 I'm just saying that sometimes threading down an explicit context parameter is a better solution, if the call chain is limited to a single module at least. 07:37:00 mark_weaver: Yes, yes, yes, and yes, but that's still irrelevant to the *problem*. 07:37:03 .. then in the customization, `C' changes to become a functor as well, and `A' changes to apply this to the customization module, before handing the result off to `B' (which doesn't change) 07:37:09 for example, I recently modified Guile's reader to pass down an explicit set of reader options to all of the helper functions used internally by read. 07:37:45 *ski* suspects that such a solution wouldn't be possible in some cases where eli wants to use parameters 07:37:47 ski: That doesn't work, since the fact that forcing A to invoke B with some reference to C means that A is aware of C, which is supposed to be an implementation detail. 07:38:37 now that I've done that, I can add as many options as I want to that "reader options" structure. 07:38:53 *eli* gives up 07:39:20 do you think that was a bad solution? should I have used parameters instead? 07:39:33 eli : ah, `A' is supposed to be aware of the customization of `C', but not (directly) of `C' itself ? 07:40:21 this case of guile's reader was a case where it was tempting to use parameters. it would have made the patch smaller and saved some work. 07:40:25 mark_weaver: No, the nature of the solution is irrelevant to the point I'm making. Never was. So in the context of why anaphoric hygineic macros is broken I don't care how you did that reader thing. 07:41:01 I've been screaming "irrelevant" in probably every sentence here, yet you persist in talking about the thing that is irrelevant, hence I give up. 07:41:19 ski: Yes, just like `current-output-port'. 07:42:06 but if `B' isn't aware of this customization of `C', then who tells `A' that it is available when using `B' ? 07:42:30 (in terms of documentation, i mean) 07:42:59 Like I said -- just like any IO customization option. 07:43:26 And see also environment variables that are often used for exactly the same purpose. 07:44:27 *ski* doesn't follow :/ 07:44:30 eli: I can see that my comments are irrelevant to syntax parameters and the problems of anaphoric hygienic macros. I'm sorry, I thought I made that clear when I said that syntax parameters are not affected by these problems afaict. 07:44:56 eli: I was simply making a related observation about the pitfalls of dynamic scoping in general. 07:45:13 eli: I'm not sure that we disagree here at all. we're just talking past each other.f 07:45:57 (i.e., i can see how environment variables are basically the same, and my question applies to them as well) 07:46:19 mark_weaver: These pitfalls are well known, but I was only talking about the problem -- the need to pass more information down a call chain. How you get around to pass that information is irrelevant for that problem. And it's only the problem that I was talking about -- since that's exactly why a hygienic `aif' etc just doesn't work. 07:46:49 In fact, I had no goal for jcowan to read about syntax parameters, just the problem of hygienic "solutions" to `aif'. 07:49:00 mark_weaver: The documentation for an environment variable just talks about a pervasive way to configure the system -- so if you have some LOCALDOMAIN variable that determines DNS lookup rules, you don't need to know how some foo program works, you just need to know that you want to control those DNS lookups regardless. 07:49:50 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Quit: Leaving] 07:55:11 gravicappa [~gravicapp@ppp91-77-170-223.pppoe.mtu-net.ru] has joined #scheme 07:57:48 eli: Like I said, I'm not sure there's any disagreement here, just a misunderstanding. Apparently you thought my comments were supposed to be directly related to your point, but I was merely making a tangential observation. 08:14:02 mmc1 [~michal@178-85-56-58.dynamic.upc.nl] has joined #scheme 08:39:21 -!- mark_weaver [~user@209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 09:24:11 -!- Nisstyre [~yours@oftn/member/Nisstyre] has quit [Read error: Connection reset by peer] 09:30:42 -!- jonrafkind [~jon@racket/jonrafkind] has quit [Ping timeout: 264 seconds] 09:37:28 -!- evhan [evhan@pdpc/supporter/active/evhan] has quit [Ping timeout: 250 seconds] 09:44:54 -!- jewel [~jewel@105-236-20-105.access.mtnbusiness.co.za] has quit [Ping timeout: 252 seconds] 09:46:52 pjb [~user@cust-seco21th2-46-193-64-247.wb.wifirst.net] has joined #scheme 09:57:21 cdidd [~cdidd@95-28-123-170.broadband.corbina.ru] has joined #scheme 09:58:03 answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has joined #scheme 10:00:05 evhan [evhan@pdpc/supporter/active/evhan] has joined #scheme 10:06:23 -!- evhan [evhan@pdpc/supporter/active/evhan] has quit [Ping timeout: 255 seconds] 10:06:53 evhan [evhan@pdpc/supporter/active/evhan] has joined #scheme 10:13:41 -!- pjb-v` is now known as pjb-v 10:29:20 phax [~phax@unaffiliated/phax] has joined #scheme 10:33:38 wingo [~wingo@fanzine.igalia.com] has joined #scheme 10:46:44 -!- wingo [~wingo@fanzine.igalia.com] has quit [Ping timeout: 248 seconds] 10:50:36 hiroakip [~hiroaki@77-20-78-82-dynip.superkabel.de] has joined #scheme 10:50:36 hiroaki [~hiroaki@77-20-78-82-dynip.superkabel.de] has joined #scheme 10:50:36 -!- hiroakip [~hiroaki@77-20-78-82-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 10:51:00 masm [~masm@bl17-197-119.dsl.telepac.pt] has joined #scheme 10:55:35 -!- phax [~phax@unaffiliated/phax] has quit [Quit: Leaving] 11:03:17 noctuorare [~noctuorar@60.168.159.187] has joined #scheme 11:05:33 pdponze [~pierre@37.0.45.21] has joined #scheme 11:22:53 -!- zuurr [~zuurr@24-177-92-172.dhcp.nwtn.ct.charter.com] has quit [Quit: computer sleeping] 11:22:57 wbooze [~wbooze@xdsl-84-44-208-244.netcologne.de] has joined #scheme 11:26:14 -!- noctuorare [~noctuorar@60.168.159.187] has quit [Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/] 11:46:02 MrFahrenheit [~RageOfTho@cable-77-221-21-70.dynamic.telemach.ba] has joined #scheme 11:49:18 -!- bipt [~bpt@cpe-076-182-071-114.nc.res.rr.com] has quit [Ping timeout: 245 seconds] 11:54:19 gffa [~unknown@unaffiliated/gffa] has joined #scheme 11:58:07 -!- jrslepak [~jrslepak@c-71-233-149-127.hsd1.ma.comcast.net] has quit [Quit: What happened to Systems A through E?] 11:58:56 protist [~protist@125-237-130-19.jetstream.xtra.co.nz] has joined #scheme 12:03:32 add^_ [~add^_@m90-141-27-69.cust.tele2.se] has joined #scheme 12:58:12 b4283 [~b4283@1-172-82-104.dynamic.hinet.net] has joined #scheme 12:58:28 amoe [~amoe@host-2-99-124-134.as13285.net] has joined #scheme 13:15:26 -!- Nisstyre-laptop [~yours@oftn/member/Nisstyre] has quit [Ping timeout: 250 seconds] 13:24:46 jao [~user@232.Red-83-32-71.dynamicIP.rima-tde.net] has joined #scheme 13:24:53 -!- jao [~user@232.Red-83-32-71.dynamicIP.rima-tde.net] has quit [Changing host] 13:24:53 jao [~user@pdpc/supporter/professional/jao] has joined #scheme 13:26:42 jrslepak [~jrslepak@209.117.47.248] has joined #scheme 13:52:09 -!- protist [~protist@125-237-130-19.jetstream.xtra.co.nz] has quit [Quit: leaving] 13:54:42 jewel [~jewel@105-236-20-105.access.mtnbusiness.co.za] has joined #scheme 14:08:20 -!- jrslepak [~jrslepak@209.117.47.248] has quit [Read error: No route to host] 14:08:49 jrslepak [~jrslepak@209.117.47.248] has joined #scheme 14:10:32 -!- MrFahrenheit [~RageOfTho@cable-77-221-21-70.dynamic.telemach.ba] has quit [Read error: Operation timed out] 14:30:58 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 245 seconds] 14:31:28 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 14:35:31 -!- jrslepak [~jrslepak@209.117.47.248] has quit [Quit: What happened to Systems A through E?] 14:57:30 -!- bjz [~brendanza@CPE-121-222-141-160.lnse1.woo.bigpond.net.au] has quit [Quit: Leaving...] 14:58:53 -!- hiroaki [~hiroaki@77-20-78-82-dynip.superkabel.de] has quit [Ping timeout: 245 seconds] 15:12:36 hiroaki [~hiroaki@p5B04A478.dip.t-dialin.net] has joined #scheme 15:17:23 -!- add^_ [~add^_@m90-141-27-69.cust.tele2.se] has quit [Quit: add^_] 15:21:16 amgarchIn9 [~amgarchin@p4FD61C96.dip0.t-ipconnect.de] has joined #scheme 15:48:36 taylanub [~taylanub@78.179.228.137] has joined #scheme 15:53:48 MrFahrenheit [~RageOfTho@cable-77-221-21-70.dynamic.telemach.ba] has joined #scheme 15:55:24 ijp [~user@host86-162-109-151.range86-162.btcentralplus.com] has joined #scheme 15:59:38 ase [~se@ip56583baa.direct-adsl.nl] has joined #scheme 16:21:11 zuurr [~zuurr@24-177-92-172.dhcp.nwtn.ct.charter.com] has joined #scheme 16:29:18 what can you do in scheme that you can't do in lisp, and vice versa? 16:32:25 With "lisp" do you mean Common Lisp ? 16:32:32 Otherwise there is no "lisp". 16:32:51 (It's a family of languages covering Scheme, CL, Clojure, ...) 16:33:02 common lisp 16:33:18 OK, now choose an implementation of each. :) 16:33:26 sbcl and racket 16:33:30 Or standard, if you wi-- OK. 16:33:35 standard. 16:33:50 Wait for R7RS-Large then, the others are no fair comparison. 16:34:03 what is r7rs-large? 16:34:06 Well maybe R6RS, I always forget that one! 16:34:18 -!- peterhil [~peterhil@91-157-48-10.elisa-laajakaista.fi] has quit [Ping timeout: 264 seconds] 16:34:34 you can do anything in both! 16:34:39 spiderweb: R7RS will be split in two parts, because some people were unhappy with R6RS breaking the "minimalist" nature of the Scheme standards up until then. E.g. R5RS is just 50 pages, R6RS is many many. 16:34:52 R7RS-Small is almost done. -Large will probably take some more time. 16:35:01 oh I see. 16:37:01 will r7rs-large define a standard library? 16:37:07 lol 16:37:46 spiderweb: Many of them, which are all optional. 16:50:58 -!- jao [~user@pdpc/supporter/professional/jao] has quit [Ping timeout: 245 seconds] 17:00:21 -!- b4283 [~b4283@1-172-82-104.dynamic.hinet.net] has quit [Remote host closed the connection] 17:03:22 -!- taylanub [~taylanub@78.179.228.137] has quit [Ping timeout: 250 seconds] 17:07:02 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 17:08:09 taylanub [~taylanub@78.179.228.137] has joined #scheme 17:11:56 youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has joined #scheme 17:17:26 mark_weaver [~user@209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 17:20:11 I have a feeling that scheme is going to become my favorite programming language. like omg. 17:22:14 spiderweb: Why? 17:23:00 arbn: because it is so elegant. 17:23:23 now for practical applications, I would probably say that another language would be my favorite. 17:23:29 spiderweb: Ah. I see. I like it for that reason, too. :) 17:23:54 spiderweb: Which one and why? 17:24:05 Programming languages have been a strong interest of mine for decades, and Scheme has certainly become my favorite. Some others have very interesting ideas, but when all is said and done, I usually end up wanting to simply carry those ideas into the Scheme world. 17:24:14 Scheme and Haskell are my favorite programming languages, for different reasons. 17:24:38 A big scheme implementation like Racket is perfectly suitable for "real world" programming. 17:25:14 Tends to be better performing than most "scripting languages," in fact. 17:25:30 Euthy`: depends on what I'm trying to accomplish actually. 17:28:01 taylanub: that is so cool! I have a feeling that I would use scheme instead of X language for a real project anytime it would be feasible. but I do like things like cpan. 17:28:36 spiderweb: I honestly don't think there is a good use for Perl anymore. 17:29:36 spiderweb: Racket has this thing instead of CPAN whose name I forgot. 17:29:44 PLaneT 17:29:52 ooh very promising. I'll have to check it out. 17:29:57 I'm a fan of Guile out of sympathy for the GNU project by the way, and it's getting very interesting, so let me mention that too. 17:30:11 And it has "guildhall" or something. 17:30:27 (I don't have much time to actually use it. :( ) 17:31:14 I wish that I could configure Emacs with Guile instead of Elisp. 17:31:20 Elisp is just... bleh. 17:31:35 arbn: Guilemacs is almost there. 17:31:53 /query sneek guilemacs 17:32:11 (It's a bot. In #guile.) 17:33:02 taylanub: Cool. I'll be hopeful, then. :) 17:33:14 Basically guile 2.0 can interpret/compile elisp to the same VM bytecode (and when the native compiler is done, to the same intermediate language) as scheme. 17:33:28 (And partly ecmascript, and maybe eventually lua.) 17:34:07 So that elisp and guilescheme code can call functions defined in each other, and emacs's own elisp engine can be replaced with guile without breaking any elisp compatibility. 17:34:28 taylanub: Wow. Very cool. 17:34:32 that is cool 17:38:31 dnolen [~user@cpe-74-64-61-245.nyc.res.rr.com] has joined #scheme 17:38:33 Racket is unquestionably an excellent system, but it has fundamental attribute which I think is quite contrary to the Lisp tradition, and that I very much dislike: it is not possible to redefine arbitrary procedures while the system is running, and have the entire system make use of those new definitions. 17:38:57 Wow, didn't know that. 17:39:08 I want a living system, like Emacs where I can modify the program incrementally while it is running. 17:39:12 I suspect most software doesn't need that ability 17:39:34 The Racket folks seem to want more of a static system. 17:39:40 Most software doesn't need this; developing most software could still benefit from it 17:39:56 ijp: it's not a question of whether software needs it. it's a matter of whether users want it. 17:43:34 mark_weaver: even emacs doesn't do this for macros 17:43:49 the taking advantage of new defintions part, not the redefining part 17:44:30 mark_weaver: Please avoid flaming; this is just not true. 17:44:48 eli: what's not true? 17:45:06 "it is not possible to redefine arbitrary procedures while the system is running, and have the entire system make use of those new definitions" 17:45:09 eli: I don't think I'm flaming. Just pointing out a difference that I think is quite important. 17:45:41 The flaming part is "quite contrary to the Lisp tradition, and that I very much dislike" 17:46:16 rudybot: (define (foo) 1) 17:46:17 eli: your sandbox is ready 17:46:17 eli: Done. 17:46:23 rudybot: (define (bar) (foo)) 17:46:24 eli: Done. 17:46:26 rudybot: (bar) 17:46:27 eli: ; Value: 1 17:46:31 rudybot: (define (foo) 2) 17:46:31 eli: Done. 17:46:34 rudybot: (bar) 17:46:34 eli: ; Value: 2 17:46:36 There. 17:46:52 I'm also not entirely sure you aren't inferring philosophy from implementation 17:47:22 eli: In Racket, can I rebind 'read' and have all the Scheme code in the system that uses 'read' start using the new definition? 17:47:29 I guess CL was more explicit about it though 17:48:22 s/rebind/set!/ 17:48:33 mark_weaver: No, because it's part of the core that you cannot modify; same as in guile. (Even if you think you can -- think about redefining the underlying read().) 17:49:19 IOW, it's just an implementation detail. For example, you can modify `map' because that happens to be implemented in racket. 17:49:42 eli: I wrote "and have all the _Scheme_ code in the system ... start using the new definition?". and in Guile, yes, you can do that. 17:50:05 In that case the answer is a simpler "yes, you can do that". 17:50:53 eli: In Racket, after the system is up and running, and after several modules have already been loaded that use 'map', can I rebind 'map' and have all of the modules that use map start using the new definition? 17:51:28 Of course doing something like that would be insane, and therefore it's certainly not easy and requires reflection etc, and it can break stuff in a horrible way -- but that's not surprising. 17:51:53 You can also write code in a way that expects modifications, if you really want to do this often. 17:52:02 gabot is an example of that. 17:52:04 *gabot* pretends to be busy with ... stuff 17:52:18 eli: right, it's a difference of philosophy as far as I can tell. 17:52:28 gabot: ping 17:52:29 *gabot* pongs 17:52:32 gabot: fing 17:52:32 eli: I didn't get that. 17:52:48 gabot: fing 17:52:48 *gabot* is confused 17:52:53 eli: What you call "insane" is one of the aspects that makes Emacs far more useful and dynamic than it might otherwise be. 17:53:02 gabot: fing 17:53:02 *gabot* fongs at eli 17:53:07 See above. 17:53:32 eli: and incidentally, calling something "insane" really is "flaming". I don't think my mild words about "contrary to the Lisp tradition" can compare to yours in terms of flaming. 17:53:34 mark_weaver: Now this is even more flaming. Please do not put words in my mouth. 17:53:44 What I call insane is redefining `map' or `read'. 17:54:20 The ability to modify code while it's running is something that I'm very well aware of, have been using very extensively since around 1994, and am still using in Racket. 17:54:32 (set! map par-map) ;; zomg, now my scheme will be teh fast 17:54:58 I'm also aware of Emacs using it, and have been using it in that context since even earlier. 17:55:41 So there is a "difference in philosophy", but that difference is nowhere near what you make it seem -- and because of that I asked you to avoid flaming. 17:55:54 Those may not be good examples of procedures to redefine, but in general, it is very useful for development, debugging, and fixing a live system while it is running, to be able to rebind (almost) arbitrary procedures while the system is running. 17:56:00 mark_weaver: the reason why it is "forbidden" to redefine system operators, is that whether they're used or not by the rest of the system is implementation dependant. Redefining map may have different implications on different systems. 17:56:34 mark_weaver: Yes it is very useful, and yes it is possible to do in racket. 17:56:53 mark_weaver: but given a specific implementation, specific version on a specific platform, you can in general freely enough redefine the system operators. Up to you to take charge of the implications. 17:57:37 mark_weaver: BTW, the 1994 date is not arbitrary -- at that time I wrote my master thesis which had a pretty large Windows application, and I was using the debug-while-running *very* extensively for that. (That was just the first major example of doing that, of course.) 17:57:40 pjb: no offense, but I think most people on this channel are aware of the few things the standard does actually say 17:58:38 eli: by "possible to do", do you mean "if the procedure in question has been specifically rigged to allow this"? i.e. (define (read . args) (apply mutable-read-binding args)) where 'mutable-read-binding' is a variable that can be 'set!' ? 17:58:57 aware or not, some people still call it "insane", instead of presenting a more refined opinion about redefinition of system operators. 17:59:36 pjb: minimisation of moving parts is standard engineering procedure 18:00:01 Why should software be an engineering discipline, and not a biological one? 18:00:03 mark_weaver: No. That would be a sane way to allow such runtime hooks, but the insane way is possible too. 18:00:36 (And BTW that can be done much more easily, just (define (set-reader! r) (set! read r)) and (provide set-reader!).) 18:00:46 Even with sane hooks, you can still break the underlying system as easily as with the unsane way. 18:00:58 pjb: depends on the software 18:01:38 being a newbie, I like the idea of a live system if that is possible. 18:02:13 For purposes of the present discussion, I'm not so much interested in being able to rebind the built-in procedures as I am in being able to rebind arbitrary procedures in the modules that the user has constructed on top. 18:02:33 It's quite possible. The price is that you may sometime hose it. 18:02:43 What's the "insane" way of doing it in Racket? 18:06:41 mark_weaver: Turn off the flag that makes racket enforce constants, then get the module's namespace, and use `eval' or whatever. 18:06:50 See also what `enter!' does: http://docs.racket-lang.org/reference/enter.html#(form._((lib._racket/enter..rkt)._enter!)) 18:07:33 Or an even more direct tool is ,require-reloadable: http://docs.racket-lang.org/xrepl/index.html#(xrepl._require-reloadable) 18:07:56 eli: is that flag a run-time flag or compile-time flag? what are the negative consequences of always having that flag off? 18:08:55 peterhil [~peterhil@91-157-48-10.elisa-laajakaista.fi] has joined #scheme 18:09:30 (other than "the hapless user might accidentally shoot himself in the foot") 18:10:11 (a) runtime flag; (b) the usual ones -- makes things slower. (Yes, it's possible to avoid some of the cost, but since this is not a frequent use case we don't have a sophisticated replace-native-code-on-the-stack thing.) 18:11:54 okay, fair enough. 18:14:41 If it's easy for users to run racket in this mode (i.e. without recompiling or modifying the system itself), then I will withdraw this objection to Racket. 18:15:50 Where are the docs the relevant flag? 18:15:58 *for the 18:24:46 mark_weaver: Yes, it's easy -- both of the tools that I mentioned are explicitly intended for development work. 18:25:19 And the flag is `compile-enforce-module-constants': http://docs.racket-lang.org/reference/eval.html#(def._((quote._~23~25kernel)._compile-enforce-module-constants)) 18:26:40 How would a user arrange to set that flag such that all of the code in DrRacket is compiled with that flag turned off? 18:26:47 -!- youlysses [~user@75-132-17-145.dhcp.stls.mo.charter.com] has quit [Quit: Ok, off to attempt a NixOS install on this box. :-)] 18:27:15 -!- pjb [~user@cust-seco21th2-46-193-64-247.wb.wifirst.net] has quit [Ping timeout: 260 seconds] 18:28:15 i.e. what's the easiest way to run a copy of DrRacket such that any Scheme code in the system can be redefined? 18:31:35 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 18:33:38 (it's not obvious to me how to set this parameter early enough, i.e. before *any* code has been compiled by the jit) 18:33:42 -!- ijp [~user@host86-162-109-151.range86-162.btcentralplus.com] has quit [Ping timeout: 264 seconds] 18:34:18 -!- taylanub [~taylanub@78.179.228.137] has quit [Ping timeout: 245 seconds] 18:36:30 mark_weaver: Probably something like starting `racket' from the repl, then change the flag, and then (require drracket). 18:37:02 presumably a bunch of stuff will have been compiled before I get the repl prompt. 18:37:03 But I'm not sure how well that will work, since drracket is huge and adds a pile of its own games at the same level 18:37:45 In any case, I don't know much about doing that with drracket, but I don't have time to try now -- I have to run out. 18:38:42 taylanub [~taylanub@78.179.228.137] has joined #scheme 18:38:49 okay, later 18:49:18 -!- wbooze [~wbooze@xdsl-84-44-208-244.netcologne.de] has quit [Ping timeout: 264 seconds] 18:56:34 Nisstyre [~yours@oftn/member/Nisstyre] has joined #scheme 19:00:12 jrajav [~jrajav@66-188-176-243.dhcp.roch.mn.charter.com] has joined #scheme 19:04:52 -!- hiroaki [~hiroaki@p5B04A478.dip.t-dialin.net] has quit [Ping timeout: 248 seconds] 19:16:25 wbooze [~wbooze@xdsl-84-44-178-42.netcologne.de] has joined #scheme 19:19:44 hiroaki [~hiroaki@77-20-78-82-dynip.superkabel.de] has joined #scheme 19:26:39 -!- mark_weaver [~user@209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 19:45:20 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 19:50:39 ijp [~user@host31-53-120-214.range31-53.btcentralplus.com] has joined #scheme 20:00:50 -!- wbooze [~wbooze@xdsl-84-44-178-42.netcologne.de] has quit [Ping timeout: 255 seconds] 20:00:51 githogori [~githogori@c-69-181-111-195.hsd1.ca.comcast.net] has joined #scheme 20:13:38 Onionnion|Eee [~ryan@adsl-68-254-160-140.dsl.milwwi.ameritech.net] has joined #scheme 20:19:34 Blkt [~user@82.84.188.5] has joined #scheme 20:20:01 jao [~user@232.Red-83-32-71.dynamicIP.rima-tde.net] has joined #scheme 20:20:08 -!- jao [~user@232.Red-83-32-71.dynamicIP.rima-tde.net] has quit [Changing host] 20:20:08 jao [~user@pdpc/supporter/professional/jao] has joined #scheme 20:28:57 -!- hiroaki [~hiroaki@77-20-78-82-dynip.superkabel.de] has quit [Quit: Ex-Chat] 20:42:45 add^_ [~add^_@m90-141-27-69.cust.tele2.se] has joined #scheme 20:59:11 wbooze [~wbooze@xdsl-84-44-178-42.netcologne.de] has joined #scheme 21:01:37 -!- pdponze [~pierre@37.0.45.21] has left #scheme 21:03:12 -!- Onionnion|Eee [~ryan@adsl-68-254-160-140.dsl.milwwi.ameritech.net] has quit [Remote host closed the connection] 21:04:03 bjz [~brendanza@CPE-121-222-141-160.lnse1.woo.bigpond.net.au] has joined #scheme 21:04:21 bjz_ [~brendanza@CPE-121-222-141-160.lnse1.woo.bigpond.net.au] has joined #scheme 21:06:30 -!- taylanub [~taylanub@78.179.228.137] has quit [Ping timeout: 272 seconds] 21:07:26 -!- jewel [~jewel@105-236-20-105.access.mtnbusiness.co.za] has quit [Ping timeout: 255 seconds] 21:08:08 -!- bjz [~brendanza@CPE-121-222-141-160.lnse1.woo.bigpond.net.au] has quit [Ping timeout: 246 seconds] 21:10:39 taylanub [~taylanub@78.179.228.137] has joined #scheme 21:26:51 -!- Nisstyre [~yours@oftn/member/Nisstyre] has quit [Quit: Leaving] 21:32:28 -!- taylanub [~taylanub@78.179.228.137] has quit [Ping timeout: 272 seconds] 21:37:08 taylanub [~taylanub@78.179.228.137] has joined #scheme 21:42:57 -!- gravicappa [~gravicapp@ppp91-77-170-223.pppoe.mtu-net.ru] has quit [Ping timeout: 244 seconds] 21:43:47 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 21:56:26 -!- jrajav [~jrajav@66-188-176-243.dhcp.roch.mn.charter.com] has quit [Quit: I tend to be neutral about apples] 22:05:19 republican_devil [~g@209-6-150-35.c3-0.bkl-ubr1.sbo-bkl.ma.cable.rcn.com] has joined #scheme 22:12:52 -!- dnolen [~user@cpe-74-64-61-245.nyc.res.rr.com] has quit [Ping timeout: 246 seconds] 22:26:48 -!- adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has quit [Ping timeout: 245 seconds] 22:30:29 adiii [~adityavit@c-76-117-52-187.hsd1.nj.comcast.net] has joined #scheme 22:37:20 -!- tertl3 [~William@108-85-16-151.lightspeed.gnvlsc.sbcglobal.net] has quit [Read error: Connection reset by peer] 22:39:16 -!- answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has quit [Remote host closed the connection] 22:42:50 offby1` [~user@q-static-138-125.avvanta.com] has joined #scheme 22:44:05 -!- offby1` [~user@q-static-138-125.avvanta.com] has quit [Client Quit] 22:47:59 -!- gffa [~unknown@unaffiliated/gffa] has quit [Quit: sleep] 22:50:30 -!- astertronistic [~astertron@ip68-8-238-110.sd.sd.cox.net] has quit [Quit: Leaving] 22:57:48 lo 23:02:21 Jayrays [~Jayrays@unaffiliated/jayrays] has joined #scheme 23:12:06 -!- githogori [~githogori@c-69-181-111-195.hsd1.ca.comcast.net] has quit [Ping timeout: 264 seconds] 23:12:17 -!- bjz_ [~brendanza@CPE-121-222-141-160.lnse1.woo.bigpond.net.au] has quit [Quit: Leaving...] 23:12:42 -!- add^_ [~add^_@m90-141-27-69.cust.tele2.se] has quit [Quit: add^_] 23:13:28 githogori [~githogori@c-69-181-111-195.hsd1.ca.comcast.net] has joined #scheme 23:21:24 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 272 seconds] 23:50:56 bjz [~brendanza@203-206-132-21.perm.iinet.net.au] has joined #scheme