00:00:03 -!- scottj [~scott@206.212.250.58] has left #scheme 00:00:03 haha 00:00:05 oh 00:00:26 it all makes sense now 00:00:36 klutometis: is Logo lexically scoped, or dynamically scoped? 00:00:51 ah, dynamically scoped.. 00:01:06 mark_weaver: Me, too; I was pleasantly surprised. 00:01:09 Yeah, dynamic. 00:01:20 I confess I'm very opinioned about programming languages, but I cannot abide a language that has only dynamically scoped variables. 00:02:35 I'd be concerned about starting a kid off with a language that has such fundamental flaws. 00:03:01 mark_weaver: Write a lexical Logo? We'll call it Llogo. I'll write it with you. 00:04:24 -!- amgarchIn9 [~amgarchin@p4FD6173A.dip0.t-ipconnect.de] has quit [Quit: Konversation terminated!] 00:04:40 klutometis: not a bad idea, perhaps :) I'll need to learn more about Logo before I decide. Maybe there are other flaws as well. I wouldn't be surprised if I end up wanting to recast the basic pedagogical ideas on Scheme instead of old Lisp. 00:04:51 Oh, snap: we got scooped: < 00:04:56 http://dspace.mit.edu/handle/1721.1/6220 00:06:40 I confess I haven't yet looked at it, but MIT App Inventor is apparently similar to Scratch on a superficial level (graphical blocks that snap together, to ease the difficulty of learning precise syntax at a young age), but it is based on Scheme instead of Smalltalk. 00:06:48 also, unlike Scratch, it is free software. 00:06:56 Oh, interesting. 00:07:02 it was built by a team led by Hal Abelson. 00:07:39 klutometis: Hal talks about it in this interview: http://www.codequarterly.com/2011/hal-abelson/ 00:08:10 (although at that time it was called "Google App Inventor", since it was first developed there) 00:11:13 kvda [~kvda@202.58.240.18] has joined #scheme 00:11:32 However, I must say that I found Eli's criticism of both Scratch and SICP to be very compelling, and I'm curious to hear his thoughts about MIT App Inventor. 00:12:05 in particular, if App Inventor relies on mutation as much as Scratch does, then I'd consider that a serious flaw. 00:12:29 klutometis: Re CS depts, yes you're right about the Java-mill thing, and that's BTW another point in SICP's history -- it's coming from a time where filtering CS students was an important factor over education (which MIT students indeed had an advantage) 00:13:47 klutometis: and re your four-year-old -- the problem is that while compositional construction of functions is natural in a way that kids can get and in a way that will advance them in other areas (most notably algebra), the kind of by-mutation computation is not natural so you're risking the kid dumping the whole thing as confusing nonsense. 00:14:16 *ski* idly wonders whether relies heavily on mutation 00:14:41 Logo is suffering from a similar thing -- at the low-level you're still dealing directly with state. The compositional aspect of logo comes from slapping functions together -- so it's a kind of a HO composition of functions. 00:15:15 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 244 seconds] 00:15:38 eli: at what age would you recommend starting to teach programming concepts, and how? 00:15:39 A better approach is something that is used in that specific book that we've talked about: the idea is that you have expressions that evaluate to pictures, and you're composing these pictures rather than adding more time-sensitive commands. 00:16:26 mark_weaver: That's another big question... I used to think that a young age would do fine, but now that I have an actual 5-year-old in the house I think that it's optimistic to start so early. 00:16:41 His attention-span is only a little more than your average ant... 00:16:56 would you start with HdTP, or is there something more appropriate for younger kids? 00:16:59 Plus you get problems like how do you deal with typing things on a keyboard, spelling and such. 00:17:07 *ski* started with BASIC at age ~6.5 00:17:31 ski: Yeah, I started early too (not that early though -- probably because I'm older), 00:17:59 one advantage that we had at those times is that when you had a computer you had better learn how to program it since otherwise there was very little that you could do with it... 00:18:24 http://picturingprograms.com/ 00:18:28 eli: It's not obvious to me that some programming concepts couldn't be introduced using some kind of tablet interface, without text. 00:18:39 the above is supposed to be a simpler version of HtDP 00:18:40 eli : *nod* -- motivation seems harder nowadays 00:19:18 mark_weaver: (True, but I have yet to see that interface... Scratch is certainly polished enough, but it's a pity that it goes in the wrong direction wrt the above.) 00:20:18 Also, HtDP is too advanced for kids that age -- that's why I mentioned the related program -- bootstrapworld.org -- which uses similar ideas but with a curriculum that is designed for 8-10 year-olds. 00:21:09 (Incidentally, it's headed by a guy who used to be my student in Cornell, and a very-SICP-like course, and later on he continued to education and to doing work with kids in an HtDP-like setting.) 00:21:11 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 00:21:58 Another factor with teaching *your* kids is that they're already learning at school, which makes their teachers the authority figures... 00:22:42 -!- tupi [~david@139.82.89.157] has quit [Quit: Leaving] 00:23:13 So if you're saying something that contradicts what their teacher said then you're risking not going anywhere since the kid will oppose these obviously wrong ideas you're having. 00:23:15 eli: authority figures in the sense that they're the ones assigning grades, or in the sense that your kids will take their advice more seriously than yours? 00:23:24 (And given the sad state on CS "education" (= nearly none, worse in the US) you *will* say things that are not taught in school...) 00:23:35 mark_weaver: The latter sense. 00:23:42 Something that I know very well, BTW. 00:24:04 eli: ouch, that must be difficult to experience. I'm not looking forward to it. 00:24:45 perhaps a good argument for homeschooling 00:25:10 When I do some hard lecture in my course, many students just fall into some twilight zone: they no longer understand the material, so they switch to a mode where they just try to remember things and get some glimpse of understanding. At that point I can say anything I want, and they will believe whatever I say even if it's completely ridiculous. 00:25:35 homie [~levgue@xdsl-78-35-176-27.netcologne.de] has joined #scheme 00:25:37 Homeschooling has benefits in that area, of course, but it requires a parent that is willing to put that kind of investment. 00:26:05 And another problem is that the parent needs to be as committed in other areas, not just in whatever happens to be your own itch. 00:26:52 And there's also the social aspect -- which I personally take as very important. (I went through a whole bunch of courses for gifted children, and I believe that it's important to learn how to be, um, normal.) 00:27:14 By "homeschooling" I don't mean the parents teaching all subjects, but teaching some subjects and selecting other teachers on an individual basis. 00:27:25 mark_weaver: (BTW, I don't know about that app inventor thing.) 00:27:43 (Anything more than vague stories, that is.) 00:28:16 eli: Hal Abelson recently developed it. I haven't looked at it myself, but apparently it looks superficially like Scratch, but is a very thin layer over Scheme. 00:28:35 s/developed it/led its development/ 00:30:21 jrslepak [~jrslepak@c-71-233-148-123.hsd1.ma.comcast.net] has joined #scheme 00:30:32 eli: it seems to me that the social skills can be taught in other ways, for example by groups of parents organizing "play groups". 00:33:17 ,yow 00:36:11 (though I have little confidence in my intuition about such things :) 00:40:38 -!- cdidd [~cdidd@128-72-4-152.broadband.corbina.ru] has quit [Remote host closed the connection] 00:48:44 jeapostrophe [~jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 00:48:44 -!- jeapostrophe [~jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [Changing host] 00:48:44 jeapostrophe [~jay@racket/jeapostrophe] has joined #scheme 00:52:01 -!- booyaa` [~booyaa@adsl-67-121-157-253.dsl.pltn13.pacbell.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 00:57:24 -!- carleastlund [~cce@gotham.ccs.neu.edu] has quit [Quit: carleastlund] 01:08:01 sizz_ [~sizz@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 01:08:26 kreol[Ukr] [~kreol@85.198.173.181] has joined #scheme 01:09:12 -!- sizz [~sizz@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Ping timeout: 265 seconds] 01:30:22 sizz_: the thing is not that sicp is 'advanced' math. but that it's beyond what the average programmer is comfortable with, because they can avoid ANY math and still get paid. 01:30:32 sizz_: they can also avoid CS and still get paid. 01:31:25 sizz_: there's a great deal of learning avoidance in the mainstream. my co-workers' interest in CS largely ended when they finished their degrees, or before. 01:32:50 Well I'm not a professional programmer; I just want to learn to be a good hobbyist programmer 01:32:59 I'm prepared to make an effort 01:34:18 That's the difference between doing something for the money or doing it for any other reason. 01:34:28 sizz_: there are a lot of experiences about it. 01:35:57 sizz_: in my day job i don't even really program. it's php for god's sake. 01:36:09 yikes 01:36:23 sizz_: it's my spare time code that actualy gets the benefit of any math/CS learning I achieve. 01:36:33 sizz_: and i self study to keep myself sane 01:37:05 sizz_: and partly also to upgrade my career. so i've been studying FP for six years off and on. 01:38:58 sizz_: http://naggum.no/motivation.html 01:40:11 :D 01:40:48 pjb: Amen. 01:41:21 I know several people who turned their hobby into a career and ended up hating it 01:41:26 seems right to me 01:43:43 sizz_: i'm on the edge of having done that. 01:44:09 sizz_: if i can't get a real job (i.e. not php) then it won't be worth it. 01:44:59 sizz_: i switched from hobby programming to full time in 2004.) 01:45:13 sizz_: but in 2004 i was doing much more interesting and varied stuff 01:45:24 well as long as you don't consider php to be programming, you can separate it from your actual programming that you do outside of work 01:45:39 that's what i do now, but the fact is, i'm wasting my time at work :) 01:45:52 the question is what more challenging work can be had. 01:47:08 eli: is there room for a new text that covers similar ground to SICP but fixes its flaws? or is HtDP as good as it gets? 01:47:23 eli: what about one oriented to 'working programmers' specifically 01:53:49 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 01:57:51 -!- ramrunner [~dsp@139.91.70.32] has quit [Quit: leaving] 01:59:10 -!- masm [~masm@bl18-51-111.dsl.telepac.pt] has quit [Quit: Leaving.] 02:03:07 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 244 seconds] 02:17:14 -!- MrFahrenheit [~RageOfTho@users-55-233.vinet.ba] has quit [Ping timeout: 245 seconds] 02:22:29 -!- sizz_ [~sizz@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Read error: Operation timed out] 02:22:49 jcowan [~John@mail.digitalkingdom.org] has joined #scheme 02:26:49 sizz [~sizz@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 02:35:32 mjonsson [~mjonsson@38.109.95.133] has joined #scheme 02:37:38 -!- mutley89 [~mutley89@cpc1-hudd6-0-0-cust741.4-1.cable.virginmedia.com] has quit [Ping timeout: 272 seconds] 02:37:53 hoi 02:38:58 jcowan: ola 02:39:06 hola 02:39:14 what is it with you and silent h? 02:42:06 annodomini [~lambda@c-76-23-156-75.hsd1.ma.comcast.net] has joined #scheme 02:42:07 -!- annodomini [~lambda@c-76-23-156-75.hsd1.ma.comcast.net] has quit [Changing host] 02:42:07 annodomini [~lambda@wikipedia/lambda] has joined #scheme 02:42:48 -!- nisstyre [~yours@c-208-90-102-250.netflash.net] has quit [Ping timeout: 246 seconds] 02:43:04 :) 02:43:09 jcowan: just to annoy you 02:43:28 Pfft. 02:43:28 -!- robolobster54 [~robolobst@77.241.58.140] has quit [Read error: Connection reset by peer] 02:44:04 Nisstyre [~yours@c-208-90-102-250.netflash.net] has joined #scheme 02:44:21 robolobster54 [~robolobst@77.241.58.140] has joined #scheme 02:46:34 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Quit: Leaving] 02:49:49 mutley89 [~mutley89@cpc10-hudd10-2-0-cust160.4-1.cable.virginmedia.com] has joined #scheme 02:50:40 -!- graspee [~graspee@02dd1c10.bb.sky.com] has quit [Quit: no time like the present] 02:51:59 qu1j0t3: SICP also starts out pretty early on with a calculus example. Many many students outside of MIT don't go into college with calculus. 02:52:15 asumu: yes. 02:52:22 (a situation that would be nice to rectify but is beyond the scope of the CS curriculum) 02:52:55 asumu: i'm tackling it with high school math, i know of others too. 02:53:04 asumu: or die trying 02:53:38 simathur [~simathur@192.100.106.9] has joined #scheme 02:53:48 :) 02:54:30 ThePawnBreak [Cristi@94.177.108.25] has joined #scheme 02:55:06 Also, oriented towards working programmers would be neat. Like a "Practical Scheme". OTOH it's not clear what that would contain. 02:55:32 (analogy with Practical Common Lisp) 02:56:02 And that's a very different book from either SICP or HtDP anyhow... 03:00:41 When R7RS-large is done then we'll need a book like that. 03:00:45 Meanwhile we do have TSPL 03:01:18 And by "done" I mean finished and fairly widely implemented in a comprehensive way. 03:01:54 jcowan: i'm not proposing a scheme ref man. in fact it may not be scheme based < collective intake of breath > 03:02:05 several years from now if all goes well, and there are many booby traps on the way to defuse 03:02:37 TSPL is only to some degree a reference manual 03:02:48 sorry, not ref man -- but scheme tutorial 03:02:57 what i have in mind is theory 03:03:00 primarily 03:03:04 The book offers three chapters of introductory material with numerous examples, eight chapters of reference material, and one chapter of extended examples and additional exercises. 03:03:34 Oh, theory! 03:03:47 jcowan: 'modern sicp' 03:03:51 wikibooks might be a good place for that. 03:04:05 I was talking about asumu's idea, actually 03:04:19 -!- arcfide [~arcfide@c-98-223-204-153.hsd1.in.comcast.net] has quit [Quit: Leaving] 03:04:26 Scheme for the working programmer. 03:04:28 jcowan: you're coming in half way. asumu was commenting on somehting i mentioned earlier. 03:04:37 jcowan: which wasn't that :) 03:04:42 No doubt. 03:04:53 Also, oriented towards working programmers would be neat. Like a "Practical Scheme". OTOH it's not clear what that would contain. 03:04:53 (analogy with Practical Common Lisp) 03:05:15 jcowan: qu1j0t3 | eli: is there room for a new text that covers similar ground to SICP but fixes its flaws? or is HtDP as good as it gets? 03:05:22 jcowan: qu1j0t3 | eli: what about one oriented to 'working programmers' specifically 03:05:28 *jcowan* nods. 03:05:59 I tried to get permission to write an ISLisp edition of PCL, but no luck; the author could not, and the publisher didn't even answer my emails. 03:06:00 jcowan: there was a monologue from eli about where sicp falls short. i can pastebin it for you. 03:06:55 If you like, sure. 03:07:06 no need to pastebin it.. it's all right here: http://rotty.yi.org/irclogs/freenode/%23scheme/2012-05-17/ 03:08:32 mark_weaver: thanks 03:09:14 I think he's probably right, even though SICP is quite excellent for people with the right talents and knowledge. 03:09:41 (SICP definitely changed my life as a programmer quite profoundly :) 03:09:49 mark_weaver: my background is similar to yours, coming in 03:10:23 mark_weaver: longtime C prog. but i don't find that advantageous. 03:10:48 qu1j0t3: I also have a fairly strong math background, at least compared to most CS folks. 03:11:33 qu1j0t3: (I was a physics major for a while, and managed to impress the Maxima developers enough to obtain write access to their repo) 03:11:35 mark_weaver: not particularly strong in math here, but i'm dogged when time allows... 03:11:36 lcc [~user@unaffiliated/lcc] has joined #scheme 03:11:57 mark_weaver: right, so we're in dramatically different leagues then. 03:12:27 qu1j0t3: have you already read SICP? 03:12:40 mark_weaver: no, i'm plodding through it. Still in Ch.2 03:12:59 arcfide [~arcfide@c-98-223-204-153.hsd1.in.comcast.net] has joined #scheme 03:14:12 my gut feeling is that you probably don't need a lot of math knowledge to understand SICP, but you should probably at least know some calculus and not have difficulty with that level of math. 03:15:00 mark_weaver: right. so far i'm keeping up. 03:15:03 hehe 03:15:04 although I dunno, maybe that's not even important. in the early chapters the examples involve that kind of math, but later on there's not much math at all as I recall. 03:15:33 cdidd [~cdidd@128-72-105-92.broadband.corbina.ru] has joined #scheme 03:16:01 what about the picture language. how can I do that? I haven't made it to that ch yet. 03:16:07 drracket? 03:16:34 It's been a loooooong time since I read SICP, and I wasn't anywhere near the target audience, and I'm certainly not a teacher, so I am the last person to judge its quality. 03:16:54 When people ask me to recommend intro texts to *anything*, I always beg off. 03:16:56 as I recall, drracket has some support for SICP, although I haven't looked closely at it. 03:16:57 Except JS:TGP 03:17:03 Yes. 03:17:06 i shouldn't be either, but there are moments as a student when i can see that it's not pulling its weight. 03:17:16 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 03:17:20 It would be easy to write a SICP implementation on top of almost any Scheme with modules. 03:17:27 realm of racket is on the way too 03:17:44 the university of berkeley california teaches sicp with python. 03:18:04 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has left #scheme 03:19:06 But I *do* think that PCL for Scheme would be an excellent thing, and I do think it depends on getting R7RS-large spec'd and widely implemented. 03:19:13 lcc: sounds painful and pointless. 03:19:19 lcc: there also exists alcohol free wine. 03:19:50 lcc: The SICP authors' scheme implementation is MIT Scheme, and support for the picture language exercises is available here: http://mitpress.mit.edu/sicp/psets/ps4hnd/readme.html 03:20:12 mark_weaver: sweet 03:20:33 I don't think current releases of MIT Scheme are 100% SICP-compliant 03:21:00 lcc: more generally, the entire http://mitpress.mit.edu/sicp/ site is worth bookmarking when you're working through SICP. 03:21:03 Doesn't SICP dialect still conflate #f and ()? 03:21:48 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 03:22:13 jcowan: the first edition of SICP did, but I'm pretty sure they fixed that in the second edition. MIT Scheme has also been fixed to separate them, several years ago at least. 03:22:27 I know MIT does, I didn't know about the 2nd ed 03:22:50 There are a few Schemes in my suite that still don't, usually don't claim to be even R4RS-compliant 03:23:37 XLisp and Rep for sure 03:24:30 -!- kreol[Ukr] [~kreol@85.198.173.181] has quit [Ping timeout: 272 seconds] 03:25:54 -!- turbofail [~user@38.99.37.210] has quit [Ping timeout: 244 seconds] 03:26:04 jcowan: I clearly remember this much: the second edition of SICP claims to be compliant with the IEEE Scheme standard. So if IEEE scheme has distinct #f and '(), there's your answer. 03:26:20 It did, one of the few diffs between R4RS and IEEE. 03:27:08 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 240 seconds] 03:27:20 However, Scheme 9 is the post facto reference implementation of R4RS, and it does distinguish, which is a permitted option. 03:27:22 more precisely: "we have rewritten all the program examples to ensure that any Scheme implementation conforming to the IEEE Scheme standard (IEEE 1990) will be able to run the code." 03:27:40 -!- tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has quit [Ping timeout: 272 seconds] 03:28:21 I don't think there are any pre-IEEE implementations left except explicit "standards-shmandards" ones. 03:28:31 T, I suppose, but not even I run T. 03:28:37 jcowan: that'd be Microsoft Scheme? ;-) 03:28:39 *qu1j0t3* runz 03:28:51 jcowan: so IEEE 1990 requires that (eq? #f '()) => #f ? 03:29:04 Yes. 03:31:26 R4RS says "Note: In some implementations the empty list also counts as false instead of true." 03:31:34 and 03:31:58 "Note: In some implementations the empty list counts as false, 03:31:58 contrary to the above. Nonetheless a few examples in this report 03:31:58 assume that the empty list counts as true, as in [50]." 03:32:45 and in the language changes: 03:32:46 "It is no longer specified whether the empty list counts 03:32:47 as true or as false in conditional expressions. It should 03:32:47 be noted that the IEEE standard for Scheme requires 03:32:47 the empty list to count as true [50]." 03:33:12 interesting, thanks :) 03:33:53 That's what happens when you ask a historian a question. 03:34:03 He goes back to the ancient Greeks, if not the ancient Chinese. 03:34:22 hehehe. history is important. I didn't understand that in my youth, but I do now :) 03:35:00 jcowan: are you an historian more generally? 03:36:40 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 03:38:00 jcowan: a biologist goes even better, and will consult bacteria. 03:39:04 I'm a person interested in history, yes. 03:39:45 jcowan: your knowledge of the history of operation equivalence in scheme was certainly a great help to me when making my argument on scheme-reports, so thank you for that :) 03:40:03 Sure. 03:40:11 *jcowan* has GAS (Geek Answer Syndrome) 03:40:42 This is like Male Answer Syndrome, except the answers are by intention correct. And they are not intended to impress, but to answer the questions that the geek *would* ask if he were in the asker's position. 03:41:14 heh, I have the same problem :) 03:41:24 hahah 03:43:03 So, any of you XMPP fans want to help me test out audio and video chat? 03:43:30 *qu1j0t3* is an xmpp fan but can't really help right now. 03:43:50 qu1j0t3: Re a new book, possibly -- though that would run into a meta problem with SICP: it can't decide whether it wants to be an intro to programming, to FP, or to PL; each of these could be a separate book. 03:44:05 eli: yes, i agree. 03:44:08 You could try to go through plai if you're interested in the latter. 03:44:11 eli: there is a minefield to negotiate 03:44:19 Which one? 03:44:27 eli: that one, for starters. 03:44:42 *eli* doesn't follow 03:45:05 eli: Maybe you know the answer to this, but I am hunting around for some sort of materials that might be used in classes similar to the Dracula second semester (if that is what they were) classes I read about. 03:45:09 eli: what you said. negotiating that tri-forked question. 03:45:12 Do you happen to know of any? 03:45:49 qu1j0t3: Ah, well, if you're going over SICP, then you'll get the first two in more or less good way, PLAI will be more focused at the PL side. 03:45:51 eli: btw, i wouldn't be writing this book. I was going to bribe Quadrescence to write it. 03:45:51 I was under the impression that they just took what they did in HtDP, but I am not sure. 03:46:12 eli: when he was 'between jobs'. but he's not between jobs yet. 03:46:17 eli: so he won't have time 03:46:19 qu1j0t3: There's also some book-like intros that are specific to racket that are very working-programmer-oriented. 03:46:38 eli: the objective was to cover similar theoretical ground to SICP. 03:46:54 eli: but in a more modern or direct way, i guess. 03:47:16 These days, attempting that would be a mistake -- because of the three different directions. 03:47:24 eli: i agree it's a problem. 03:47:43 eli: in fact clarifying the mission of the book was task #0 03:49:19 mark_weaver: Don't get me wrong, BTW -- I went through SICP and I liked it a lot; if you do manage to get it, then there's not much problem with the choice (other than wasting some time on things that are not too relevant, but no harm in that). It's the recommendation to newbies that is a bad idea, since for most people there is not much teaching that will go through, and in many cases you'd get the opposite effect. 03:49:20 eli: I can understand and accept the criticisms of SICP you made earlier, but on this recent criticism I disagree. for me at least, the mixture of topics covered in the latter part of SICP is precisely what made it so valuable for me. 03:51:08 lcc: IIRC, the drracket support for SIC does have the graphical language implemented -- I don't know about MIT Scheme, but FWIW in its laast few semesters, the SICP course in MIT (6.001) had Racket (or PLT Scheme at the time) as the popular choice for most students. 03:52:10 mark_weaver: There's no problem with mixing topics, but there's no way that you could mix an into to programming course and an intro to PL and do a good job -- unless you write a massive book that is twice longer than most books. 03:52:22 I was a very experienced programmer in the traditional imperative style that C programmers tend to learn, and SICP introduced me to a much larger set of programming styles, and perhaps most importantly the notion that advanced programmers should be comfortable designing their own domain-specific languages when appropriate. 03:52:51 -!- jcowan [~John@mail.digitalkingdom.org] has quit [Quit: Leaving] 03:52:59 -!- ThePawnBreak [Cristi@94.177.108.25] has quit [Ping timeout: 272 seconds] 03:53:01 eli: I'm also not sure that it's trying to be an intro to "Programming Languages" (is that what PL stands for?). 03:53:16 arcfide: You mean something based on ACL2 specifically, or something in the general direction of applied logic/theorem proving/whatever? 03:53:22 I would argue that it's trying to introduce the reader to different programming _styles_, which is quite different. 03:54:08 eli, There is lots of stuff out there for various provers, but I was interested specifically in an approach that took the CS1 problem set (C211 at IU) or something similiar and attacked them systematically. 03:54:40 mark_weaver: Huge parts of it are about defining interpreters -- that's pure PL stuff. (And, incidentally, a bad approach for implementing DSLs, if you ever think about doing that.) 03:55:43 mark_weaver: Also, bear in mind that you're no longer in the majority... Since I started teaching I saw a very obvious change in what students come with -- these days the whole enlightment moment when you learn about `lambda' is almost completely gone, since most people already know it. 03:56:14 In fact, with Java and C++ crossing over I think that C is the *only* major PL that doesn't have first-class functions... 03:56:32 ThePawnBreak [Cristi@94.177.108.25] has joined #scheme 03:57:37 arcfide: Sounds like you'll want to contact Carl Eastlund about it. 03:57:54 eli: Thanks, I will give him a shout. 03:58:45 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 248 seconds] 03:59:13 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 03:59:16 arcfide: He's sometimes on #racket (carleastlund), but he's not on the interactive side... 04:01:02 -!- eli [~eli@racket/eli] has left #scheme 04:01:04 eli [~eli@racket/eli] has joined #scheme 04:03:11 tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has joined #scheme 04:06:03 -!- wtetzner [~wtetzner@c-24-218-217-69.hsd1.ma.comcast.net] has quit [Remote host closed the connection] 04:06:41 eli: I agree that writing an interpreter is usually not the best approach for implementing a DSL, it is certainly the most general, and sometimes it is only way. 04:06:58 s/it is/but it is/ 04:08:08 -!- mjonsson [~mjonsson@38.109.95.133] has quit [Remote host closed the connection] 04:10:52 As I see it, SICP provides an introduction (for talented students) to the approaches required to advance the state of the art in software engineering. 04:11:28 Sometimes it is not sufficient to use existing tools such as macro systems to make those advances. 04:11:33 mark_weaver: it doesn't actually teach the state of the art in interpreters though. 04:11:46 mark_weaver: I've never seen a practical case where it is the only way; but I've seen tons of cases where macro-based DSLs beat the crap out of writing an interpreter. (In speed, in code size, in robustness, in design time, in debugging.) 04:12:16 And yes, what asumu said, and even from a POV of pure SE it's heavily outdated. 04:14:02 asumu: that's true. it only touches on the basic ideas. but at least for me, it opened my eyes to the possibilities. there are advantages to a wide survey of fundamental techniques. you can keep them in the back of your mind as possible solutions, and then study the relevant subjects in more depth when needed. 04:14:11 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 04:14:36 mark_weaver: yes 04:14:56 sicp teaches programming as an artform, not merely instructing the computer to perform tasks. 04:15:08 hm... 04:15:12 -!- lcc [~user@unaffiliated/lcc] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 04:15:20 *eli* rolls his eyes 04:15:52 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 04:16:29 mark_weaver: By thinking that it's a good bank of ideas for that purpose you're ignoring the macro approach completely, which means that if/when you do need to write a DSL you'll go down the wrong path. 04:17:10 eli: fair enough. the fact that SICP does not cover macros is a serious shortcoming, I fully agree. 04:17:33 for the record, macros are my preferred method of implementing DSLs, and they are almost always sufficient. 04:17:54 annodomini [~lambda@c-76-23-156-75.hsd1.ma.comcast.net] has joined #scheme 04:17:55 -!- annodomini [~lambda@c-76-23-156-75.hsd1.ma.comcast.net] has quit [Changing host] 04:17:55 annodomini [~lambda@wikipedia/lambda] has joined #scheme 04:18:08 mark_weaver: I hope that that's not when you're writing C... 04:18:12 :) 04:18:24 eli: was good enough for Bourne! 04:18:38 mark_weaver: have you read Paul Graham's "On Lisp" ? 04:18:42 eli: hehehe :) 04:18:52 eli: of course I'm talking about Scheme macros :) 04:19:07 mark_weaver: Which implementation, BTW? 04:20:16 eli: Guile. I work on it's implementation as well. 04:20:23 s/it's/its/ 04:21:00 mark_weaver: In that case, you should see the really good side of macros -- what happens when you mix them with modules. (At least AFAIK, from random bits that I read here and there.) 04:21:29 That's much more powerful than what you get with a traditional "r5rs-like" implmentation... 04:21:46 -!- arcfide [~arcfide@c-98-223-204-153.hsd1.in.comcast.net] has quit [Quit: Leaving] 04:21:47 qu1j0t3: I started to, but when it got heavy into macros I lost interest because it was all about unhygienic low-level macros. 04:24:24 lcc [~user@unaffiliated/lcc] has joined #scheme 04:25:30 eli: I'm not entirely sure I follow you. Of course, hygienic macros mix quite nicely with modules, but I'm not sure I understand what makes the combination significantly more powerful. 04:26:30 but then again, I've never done significant work with a macro system without modules. 04:26:59 mark_weaver: Re texts about macro -- quick warning: if you don't know much about macros *don't* use the "Syntax-rules Primer for the Merely Eccentric" text. 04:27:09 Guile uses a modified psyntax (syntax-case) macro expander, which I've done some hacking on myself. 04:27:51 As for what I mean -- I don't know if Guile is there yet, but what I'm talking about is basically using a module to provide the language for each file, and the extremely easy way that you can slap together your own language in practically a few seconds. 04:28:07 eli: I understand the psyntax implementation quite well. 04:28:21 -!- lcc [~user@unaffiliated/lcc] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 04:28:24 That's actually the least necessary thing... 04:28:36 I don't know the implementation pretty intentionally. 04:28:58 lcc [~user@unaffiliated/lcc] has joined #scheme 04:31:34 eli: Guile has some missing pieces that make macros much less powerful than the ones in Racket. 04:31:45 although we are making progress. 04:32:29 mark_weaver: In that case try racket quickly to know what stuff to add to guile... 04:32:38 mmc [~michal@178-85-63-71.dynamic.upc.nl] has joined #scheme 04:32:50 eli: one thing we're still missing, and which I vaguely recall seeing in Racket, is the ability to define a macro that gets used by default for non-macro combinations (i.e. normal procedure calls). 04:33:04 Yeah, that's one of the nice ones... 04:33:12 Let me see if this still works... 04:33:38 rudybot: init http://tmp.barzilay.org/values.rkt 04:33:39 eli: your "http://tmp.barzilay.org/values.rkt" sandbox is ready 04:33:43 I could add that quite easily though, and probably should move that higher on my TODO list :) 04:33:52 rudybot: (+ 1 (values 2 3) 4) 04:33:53 eli: error: context expected 1 value, received 2 values: 2 3 04:34:43 eli: was that a mistake, or are you demonstrating something that has gone over my head? :) 04:35:08 Meh, that should be working, but it doesn't. I don't know why... 04:35:35 That file implements a language where all multiple-values are spliced with other arguments in the same function. 04:35:53 nice :) 04:36:14 rudybot: (values 1 2) 04:36:14 eli: ; Value: 1 04:36:15 eli: ; Value#2: 2 04:36:20 rudybot: (list (values 1 2)) 04:36:21 eli: error: context expected 1 value, received 2 values: 1 2 04:36:34 rudybot: (app list (values 1 2)) 04:36:35 eli: ; Value: (1 2) 04:36:50 Ah, it's in the language module instead of using it... 04:37:53 rudybot: init http://tmp.barzilay.org/values.rkt 04:37:54 eli: your "http://tmp.barzilay.org/values.rkt" sandbox is ready 04:37:58 rudybot: (+ 1 (values 2 3) 4) 04:37:59 eli: ; Value: 10 04:38:08 Euthydemus [~euthydemu@unaffiliated/euthydemus] has joined #scheme 04:38:17 rudybot: (define (foo) (values 1 2 3)) 04:38:17 eli: Done. 04:38:24 rudybot: (list (foo) (foo)) 04:38:24 eli: ; Value: (1 2 3 1 2 3) 04:38:28 rudybot: (- (foo)) 04:38:28 eli: ; Value: -4 04:38:33 mark_weaver: There... 04:39:08 nice! 04:39:20 so that's implemented with the macro feature I just mentioned? 04:40:00 From a practical point of view, I have only one major complaint about Racket: last I checked, its OO programming system was very primitive compared with Guile's. Are the Racket developers opposed to having multi-dispatch and a proper MOP? 04:40:59 FWIW, I'm _not_ one of those people who think OO is appropriate everywhere. In fact I rarely use it myself, and consider it only appropriate in very limited circumstances. 04:41:25 Yeah -- note the definition of `#%app' which is that macro. (I had to flip things and instead of providing a defined `app' as `#%app' I made it require the original `#%app' as `A' so I can redefine it without getting into an infinite loop.) 04:41:59 The thing about the OO system is not really that important, since it's all just at the macro level anyway... 04:42:46 We do have a CLOS-like system -- swindle, which I wrote ages ago -- it does pretty much everything that you'd want from a CLOS system, but it has a major flaw which is that it inherently relies of side-effects. 04:45:04 what is wrong with that? 04:45:33 eli: doesn't racket's internal implementation also rely on side-effects? 04:45:52 pyro-: You can't write library code that I can't break in client code. 04:46:12 mark_weaver: No, that's kind of the whole point of having methods defined inside the classes. 04:46:50 -!- jao [~user@pdpc/supporter/professional/jao] has quit [Ping timeout: 272 seconds] 04:47:28 eli: I've written code for GOOPS (Guile's CLOS-like system) that doesn't mutate anything at the scheme level. 04:48:06 -!- soveran [~soveran@186.19.214.247] has quit [Remote host closed the connection] 04:48:09 of course there's lots of mutation going on within the implementation, having to do with caching for fast method dispatch, but that's under the rug. 04:48:29 mark_weaver: The basic problem is that `defmethod' is basically banging a method into the generic function. 04:48:38 -!- getpwnam [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Ping timeout: 265 seconds] 04:49:11 So whatever code you write, there's nothing that prevents me from writing my own `defmethod' for your class that will bang in my own code, therefore breaking your library. 04:49:17 -!- homie [~levgue@xdsl-78-35-176-27.netcologne.de] has quit [Ping timeout: 260 seconds] 04:49:26 jewel [~jewel@183.62.46.82] has joined #scheme 04:50:03 (Of course cool kids slap a buzzword on that ("monkey-patching") and rave about how powerful things are... Bugs are someone else's problem...) 04:51:22 mark_weaver: Racket's core OO system lives on a different axis with mixins, traits, and so on. It's not necessarily primitive but different. 04:52:42 asumu: "mixins" is a wrong term here, because they do have a (different) meaning in CLOS and similar systems. 04:52:54 eli: true, but prohibiting users from adding new methods to an existing class is a very severe restriction that greatly limits the ability to make two modules work together nicely in the combined system. 04:53:13 (if those two modules don't know about each other a priori) 04:53:27 Right, I meant mixins in the Smalltalk/Ruby/pre-CLOS Lisp sense. 04:53:48 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 245 seconds] 04:54:16 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 04:54:22 Or, if you like, "functions that act on classes" 04:54:24 mark_weaver: Well, there's a *lot* of code written using Racket's OO system, as well as languages with a similar restriction on their OOs. 04:54:25 I prefer to write purely-functional code whenever possible (and in fact I was a big fan of Haskell for a while), but I've come around the Hal Abelson's perspective that purely functional programming is not quite as expressive as imperative programming. 04:55:03 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 272 seconds] 04:55:21 imperative programming is a powerful and dangerous tool to be avoided whenever practical, but sometimes it cannot be avoided without severe complications. 04:55:30 That's not some meta point about purity, that's a very real point about real code and ways to break it. 04:56:14 For example, if I write some tool that evaluates student code for automatic grading, I *need* to make sure that the student can't mess things up. 04:56:35 Same goes for any situation where I'm not loading or evaluating trusted code. 04:57:08 for example, how would you implement a computer algebra system with Racket's OO system? you need to be able to define an extensible set of operators on an extensible set of data types. 04:57:16 Imagine someone writing a great IDE, and imagine someone else writing a great library, only it turns out that the library breaks the IDE because it overwrites some random method. 04:57:36 -!- habitue [~user@pool-72-64-203-156.tampfl.fios.verizon.net] has quit [Ping timeout: 272 seconds] 04:58:06 mark_weaver: at the use-site, you would compose either a series of traits or mixins that add the additional functionality to your base classes. 04:58:13 (mixins in the Racket sense) 04:58:35 Your mixins/traits extend operations, the base classes give you the data. 04:59:03 This is how large parts of DrRacket are implemented and how its plugin API works. 05:02:17 asumu: Since I know nothing about Racket's 'traits' or 'mixins', I can't properly respond, but I'm skeptical that this allows the kind of flexibility that a proper MOP and multiple-dispatch OO system can provide. 05:02:34 (of course, like many things, there are limitations: you can't use this to "backpatch" operations onto existing objects that are already instantiated) 05:03:34 That shouldn't be a parenthetical comment -- forbidding such backpatching is the main feature here. 05:04:11 For example, if I define a new kind of numeric representation, e.g. "infinite-precision reals" based on continued fractions, how can I extend the standard '+' operator to add existing numeric types to these infinite-precision reals? 05:04:31 mark_weaver: There was a '98 paper on solving the "extensibility problem" you alluded to using Racket's modules and OO. 05:04:37 (such that _all_ existing code in the system can now use my new numbers) 05:05:16 And yes, as eli said there are explicitly some things you cannot do that you could do using external dispatch. 05:05:38 (if you're curious, the paper is http://www.cs.utah.edu/plt/publications/icfp98-ff/paper.shtml) 05:07:53 -!- lcc [~user@unaffiliated/lcc] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 05:07:55 I can certainly understand why it makes you uncomfortable to be able to extend the system in such a way that all existing code can benefit from the extensions, but as a result, it seems to me that Racket is fundamentally less extensible. 05:08:22 (of course you can always hack the implementation, but it's not conveniently extensible in the way that Guile or Emacs is) 05:09:16 It's not really fundamental, since you could just use Swindle and get all that. 05:09:18 This is a very basic philosophical difference between Racket and Guile, and although I admire Racket in many respects, I very much prefer Guile's take on this. 05:09:37 If you mean it's not idiomatic, then yes, I think you're right. 05:10:20 asumu: with Swindle, can I add a new numeric representation and then have all existing code in the system be able to use my new numeric type? (without recompiling the Racket implementation?) 05:11:28 You'll have to ask eli, but if the rest of the code were using the generic method, then I think so. AFAIK, it is a port of TinyCLOS w/ improvements. 05:11:57 jewel [~jewel@183.62.46.82] has joined #scheme 05:12:32 s/method/function/ 05:14:48 asumu: what do you mean "if the rest of the code were using the generic method"? I'm talking about the entire Scheme system. In Guile, the primitive numeric operators are all extensible. They have fast C implementations that handle the built-in types, but if none of those match, it dispatches into GOOPS. 05:17:35 That means, for example, that _any_ code that adds two Scheme numbers (even code written in C) will now be able to use the new numeric representation. 05:18:01 -!- ThePawnBreak [Cristi@94.177.108.25] has quit [Ping timeout: 252 seconds] 05:18:39 mark_weaver: You're right, Racket's primitives don't currently do that. It'd be possible to add that though. Some cases being harder than others (like the parts written in C). 05:18:40 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 05:20:51 Of course it would be possible to add it. No one is denying that. But it sounds to me like the Racket developers are philosophically opposed to adding it. 05:26:20 -!- peterhil` [~peterhil@xdsl-77-86-196-131.nebulazone.fi] has quit [Ping timeout: 252 seconds] 05:28:12 ThePawnBreak [Cristi@94.177.108.25] has joined #scheme 05:28:34 peterhil` [~peterhil@xdsl-77-86-196-131.nebulazone.fi] has joined #scheme 05:28:40 mark_weaver: I don't think there is any philosophical opposition. More like it's not clear if a CLOS-style system is the pragmatic choice for Racket (as opposed to another way to do generic functions). 05:28:44 But I do not speak for Racket. 05:29:49 In any case, late in my time zone so I'm heading out. Night all. 05:30:13 asumu: okay, nice chatting with you! :) 05:30:24 mark_weaver: same to you. :) 05:35:09 -!- wingo [~wingo@90.164.198.39] has quit [Ping timeout: 245 seconds] 05:48:16 -!- mmc [~michal@178-85-63-71.dynamic.upc.nl] has quit [Ping timeout: 272 seconds] 05:48:23 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 244 seconds] 05:48:45 kilimanjaro [~kilimanja@ip70-162-88-143.ph.ph.cox.net] has joined #scheme 05:48:45 -!- kilimanjaro [~kilimanja@ip70-162-88-143.ph.ph.cox.net] has quit [Changing host] 05:48:45 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme 05:51:06 -!- jewel [~jewel@183.62.46.82] has quit [Read error: Operation timed out] 05:55:20 gravicappa [~gravicapp@ppp91-77-221-19.pppoe.mtu-net.ru] has joined #scheme 05:59:03 mark_weaver: "uncomfortable to be able to *extend* the system" the system is wrong -- the problem is with *modifications*, not with extensions. 05:59:55 And that goes to your description of extending `+' -- that sounds like it's either something that is a performance disaster, or something that is ironed with some dirty hack. 06:00:06 My guess would be the latter. 06:01:04 The thing is that if guile really does treat `+' as a proper generic function, then there's no easy way to do some kind of a fast-path folding of things like `+' expressions, since I can always add a method to `+' that will change what the fast path is doing too. 06:01:53 An obvious example of that with CLOS would be just adding a method for two s -- that means that I'm destroying the fast path, and therefore any kind of inlining of `+' is inherently wrong. 06:02:43 You might forbid adding methods that already exist, and say that adding such a method is going to throw an error (eg, that particular method is locked-in and cannot be overwritten), but that doesn't work either 06:03:24 An example of that would be adding a method with a singleton class that redefines what `+' is doing with, for example, a 0 as its first argument. 06:04:14 And even if you abolish singleton classes for that reason, you can still change the meaning by adding an around/before/after method for `+' that changes its meaning with the same implications. 06:04:47 And even without that -- if you have a true full MOP, then you can change the standard method combination with, again, a similar change to existing semantics. 06:05:10 Now, at a higher level, the whole thing goes down to the well known concept of hooks -- 06:05:38 having a proper full-fledged CLOS means that each an every generic function application comes with a "built-in" hook... 06:06:03 This has an obvious advantage in that you can change the system in many ways. 06:07:14 This is a side of CLOS that eventually evolved into AOP. Having that power always brings in these kinds of problems, and AOP is mostly unpopular for this reason: you just can never rely on some code to follow some invariants since everything is free to change later on. 06:08:06 It's kind of like the argument of `fluid-let' vs parameters: you get the same kind of functionality with both tools, but there's a major difference in that with parameters you control which values can change dynamically. 06:08:29 jewel [~jewel@183.62.46.82] has joined #scheme 06:08:31 what is fluid let? 06:08:36 Proponents of `fluid-let' will point that it makes it possible to change everything, including extensions that you (the library implementor) did not anticipate. 06:09:09 OTOH, opponents of `fluid-let' will point that this complete freedom means that you cannot rely on the semantics of any binding, since they can all change behind your back. 06:10:03 bfig: (fluid-let ([x 1]) (blah)) is kind of similar to (let ([old-x x]) (set! x 1) (let ([result (blah)]) (set! x old-x) result)) 06:10:08 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Quit: Leaving] 06:10:33 mark_weaver: Historically speaking, things like `fluid-let' have fallen out of favor because they're too permissive. 06:10:41 what ia [.. ]? 06:10:48 Same as (...) 06:11:15 mark_weaver: With real unrestricted CLOS you're up against the same kind of destructive opennes, where you can't rely on `+' doing what it's supposed to do. 06:11:53 In Racket, the general spirit is to make robust code possible, therefore people wouldn't want the everything-is-modifiable by default. 06:12:24 does racket have call/cc? 06:12:25 People would most likely *not* have a problem with something that is a proper extension -- but that's not what you get with CLOS. 06:12:32 bfig: Yes. 06:13:39 mark_weaver: So you could of course implement some particular operation that can be extended in arbitrary ways -- the obvious example would be (define (foo x y) (the-current-foo x y)) where `the-current-foo' is something that can be banged and modified at runtime -- but the point is that you do that only where you want to allow such an extension. 06:14:04 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 06:14:05 eli: For the core numeric operators like '+', Guile takes a slightly impure pragmatic approach. '+' is not a pure generic function. It has a C implementation that always handles the built-in types directly, and that cannot be changed by adding methods to it. Only if one of the operands is not handled by the built-in dispatcher will it proceed to the more general GOOPS dispatcher. 06:14:07 -!- jeapostrophe [~jay@racket/jeapostrophe] has quit [Ping timeout: 252 seconds] 06:14:25 Since CLOS as is (and as implemented in CL and in Swindle) cannot be made into something that can only be extended and not modified, it would not be a popular choice for an object system. 06:15:07 mark_weaver: Yeah, that's unsurprising -- it's the hack that I was referring to. 06:15:35 And you can probably see the problem in that -- why should C code have the advantage of being able to "lock down" semantics in that way? 06:15:40 eli: the problem is that "extending" a system involves "modifying" the system. There's no getting around that. I can understand the dangers, but in practice, with proper care, very large and robust systems can be built this way. Emacs proves that. 06:17:36 eli: I agree that it's less elegant that I'd prefer, but I think you're exaggerating its badness. 06:18:26 Well, yes, Emacs is a big system -- but it's far from being a *robust* one... 06:19:15 I can tell you as a very long-time Emacs users I still have some mysterious bugs in my Emacs that I have no clue why they happen, and it's not possible for me to debug them without digging through other people's code. 06:19:44 IOW, I can't just scream "Emacs is broken" and let the Emacs maintainers worry about it, since there's always a chance that it's *my* code that broke it. 06:20:12 As for exaggerations -- I can only tell you my personal anecdote of appreciating this kind of code robustness: 06:20:12 People use Emacs? 06:20:28 Appears so. 06:20:30 eli: It's not robust in the sense of allowing secure sandboxing of malicious code, but it's robust in the sense that I can run it without problems for many months without a restart, while adding new code and modules dynamically, and in practice things work well. 06:20:52 mark_weaver: Back when I implemented swindle, I had a bunch of extensions to the language taht were going down at a very fundamental level. 06:21:20 That was something that was partly needed for the course that I was teaching at the time, and partly my own fetish with playing with new langugaes. 06:22:00 In any case, it turned out that some of the extensions that I did collided with how MzScheme (as it was called at the time) worked, and as a result Swindle broken DrScheme. 06:22:04 -!- Radium [~rajesh.na@117.203.14.240] has quit [Ping timeout: 252 seconds] 06:22:10 I tried a bunch of hacks but there was no way to fix it. 06:22:32 This was in the pre-v200 days, before the current module system was in place. 06:23:16 In any case, after I tried a bunch of hacks to make things work I realized that I just can't do it without changing the system, and since that was for some unrelated course in an unrelated university, I couldn't ask them to change mzscheme... 06:23:44 So my solution was to just take the whole DrScheme implementation, and create an exact copy of the whole thing which I then modified to work with Swindle. 06:24:13 IOW, it's a software model that is bad, but as usual with an open-source system, you can always get around problems by forking the code... 06:24:45 Radium [~rajesh.na@117.203.1.33] has joined #scheme 06:24:49 The result was a "DrSwindle" -- and of course with every new release of the real DrScheme I had to replay the same changes on DrSwindle and release that too. 06:24:57 -!- cdidd [~cdidd@128-72-105-92.broadband.corbina.ru] has quit [Read error: Operation timed out] 06:25:41 That's the usual kind of game that means that eventually one of the system will die -- either DrSwindle will become popular and nobody would use DrScheme, or -- much more likely -- DrSwindle will continue to live as a side-fork until I get too tired to maintain it. 06:26:14 The beauty of a sane module system is something that I realized after the switch they did to modules -- 06:27:10 eli: I understand that there are inherent dangers with allowing the system to be extensible. My point is only that there's a significant price to pay by prohibiting the kind of extensibility I'm talking about. You never did answer my question about how to implement a computer algebra system with Racket's OO system. 06:27:13 I resisted updating the Swindle codebase (because each such update was painful in terms of work that I need to do, and because Swindle relies on a *lot* of macrology, and the module system accompanied the switch to a higenic macro system), 06:28:03 but once I decided to bite the bullet and move to the newer version, the great thing that fell out of that upgrade work was that I no longer needed the DrSwindle hack -- Swindle just worked fine, with all of its language modifications. 06:28:35 Needles to say, that was -- from *my* point of view (as the library implementor) -- a huge advantage. 06:28:56 So the restriction was not something that made me do more work, it's something that made me do significantly less work. 06:29:13 -!- copec [~copec@64.244.102.140] has quit [Ping timeout: 276 seconds] 06:29:15 It seems to me that you are just not interested in the kind of problems that require an extensible system. 06:29:33 The fully-modifiable system is the thing that I paid a good price for. 06:30:02 Not at all! Swindle was very much (and still is) an extension of the basic language. 06:30:14 If I need a system with secure sandboxing, a system like Racket is definitely the way to go. 06:30:16 copec [~copec@64.244.102.140] has joined #scheme 06:30:38 But there's no need to go with such a long story -- it's sufficient to note that exact hack that you mentioned. 06:30:41 mucker [~mucker@183.83.21.171] has joined #scheme 06:31:07 That the guts of guile enjoy having an exception to the MOP, something that I can't do as a library implementor. 06:31:14 eli: I'm talking about a different kind of extensibility. In my case, extending numeric operators to handle new representations, such that the entire system can now use the new representations. 06:31:21 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Ping timeout: 250 seconds] 06:31:40 So the thing is that it's taking away power from me: you (the language implementor) get features that you explicitly take away from me... 06:32:17 Well, there is a much simpler solution. 06:32:25 Yes, like I said, there is nothing wrong with proper extensions -- the open question is how to allow such extensions in a way that doesn't lead to code breakage... 06:32:25 eli: the exception implemented by the numeric operators in Guile could, in fact, be implemented by _any_ library implementor. 06:32:35 And AFAICT, guile just hacks over it instead. 06:32:44 all it requires is to implement a normal procedure that uses a generic function as its fallback. 06:33:32 Ah, OK then, that just means that if I want robust code, I should just avoid using the object system... 06:33:33 which is exactly what Guile's numeric operators do. There's nothing prevent _anyone_ from doing the same thing, without recompiling Guile or even using C. 06:33:34 bfgun [~b_fin_g@r186-52-186-188.dialup.adsl.anteldata.net.uy] has joined #scheme 06:34:34 In that case I think that there's no big problems -- all you need is to implement some equivalent of DrRacket, and the open object system will naturally reveal its problems... 06:34:43 s/big/conceptual/ 06:35:23 -!- bfig [~b_fin_g@r190-135-27-158.dialup.adsl.anteldata.net.uy] has quit [Ping timeout: 252 seconds] 06:35:37 eli: I still haven't heard an answer to the computer algebra system problem. 06:36:30 That's obvious: you'd implement the same kind of extensible-via-exception operations... 06:37:00 eli: except that only new code will be able to use the new numeric types. 06:37:07 -!- jonrafkind [~jon@racket/jonrafkind] has quit [Ping timeout: 245 seconds] 06:37:09 And the extensibility can be done using a number of tools -- swindle generics, traits/mixins on the racket object system, parameters, units, or just old-fashioned globals. 06:37:56 kk` [~kk@unaffiliated/kk/x-5380134] has joined #scheme 06:37:57 Sure, but that's only because nobody wants these kinds of extensions in the primitive layer. 06:38:12 If sufficiently many people do, then it will be extended, of course. 06:38:50 eli: the problem is not just at the primitive layer. it's in every part of the system that doesn't explicitly decide to use swindle generics for their numeric operators. 06:39:08 (and if they did, of course, the system would become unacceptably slow) 06:39:56 Well, you're making me go back to the point about creating new languages in Racket... 06:40:11 If you care to listen I'll cook up a quick example for you. 06:41:02 eli: thanks, but it's very late and I'm getting a bit frustrated anyway. It's probably time for sleep. 06:41:16 eli: maybe later? 06:41:25 I can mail you if you prefer that. 06:41:28 MichaelRaskin [~MichaelRa@3ad50e34.broker.freenet6.net] has joined #scheme 06:41:38 eli: sure, sounds good. mhw@netris.org 06:41:40 (It's really not going to be as long as it might sound...) 06:41:42 OK. 06:42:09 okay, thanks for chatting. good night! 06:42:23 -!- 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)] 06:47:45 answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has joined #scheme 06:52:02 b1rkh0ff [~b1rkh0ff@178.77.20.215] has joined #scheme 06:52:04 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 256 seconds] 06:53:04 -!- kk` [~kk@unaffiliated/kk/x-5380134] has quit [Quit: WeeChat 0.3.7] 07:05:31 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 07:07:57 -!- bfgun is now known as bfgg 07:08:01 -!- bfgg is now known as bfig 07:09:23 jewel [~jewel@183.62.46.82] has joined #scheme 07:10:12 -!- MichaelRaskin [~MichaelRa@3ad50e34.broker.freenet6.net] has quit [Remote host closed the connection] 07:15:02 -!- ThePawnBreak [Cristi@94.177.108.25] has quit [Ping timeout: 272 seconds] 07:15:32 -!- answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has quit [Quit: leaving] 07:15:56 answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has joined #scheme 07:18:22 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Ping timeout: 245 seconds] 07:19:05 -!- bfig [~b_fin_g@r186-52-186-188.dialup.adsl.anteldata.net.uy] has quit [Quit: Leaving] 07:19:24 bfig [~b_fin_g@r186-52-186-188.dialup.adsl.anteldata.net.uy] has joined #scheme 07:24:21 antithesis [~antithesi@s51476e07.adsl.wanadoo.nl] has joined #scheme 07:30:35 -!- tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 07:30:47 tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has joined #scheme 07:32:51 chu [~mathew.ba@CPE-124-176-25-97.lns2.dea.bigpond.net.au] has joined #scheme 07:33:59 -!- bfig [~b_fin_g@r186-52-186-188.dialup.adsl.anteldata.net.uy] has quit [Remote host closed the connection] 07:41:45 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 252 seconds] 07:44:15 -!- kvda [~kvda@202.58.240.18] has quit [Quit: Computer has gone to sleep.] 07:50:15 wingo [~wingo@90.164.198.39] has joined #scheme 07:56:29 lastwill [~will@bb1.reu.89-16-9-24.adsl.only.fr] has joined #scheme 07:58:25 MichaelRaskin [~MichaelRa@3ad50e34.broker.freenet6.net] has joined #scheme 07:59:02 jewel [~jewel@183.62.46.82] has joined #scheme 08:02:08 -!- mucker [~mucker@183.83.21.171] has quit [Quit: Lost terminal] 08:13:29 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 08:17:06 -!- floater_f432c [~fe30dd50e@2a01:270:dd00:7700:404:dead:beef:cafe] has quit [Ping timeout: 272 seconds] 08:18:04 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 245 seconds] 08:19:04 -!- answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has quit [Ping timeout: 276 seconds] 08:19:46 answer_42 [~answer_42@gateway/tor-sasl/answer42/x-66983568] has joined #scheme 08:24:42 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 272 seconds] 08:26:58 mucker [~mucker@183.83.51.123] has joined #scheme 08:26:58 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 08:32:18 mucker [~mucker@183.83.51.123] has joined #scheme 08:32:26 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 08:33:50 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Ping timeout: 244 seconds] 08:34:17 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 08:34:26 jewel [~jewel@183.62.46.82] has joined #scheme 08:38:21 mucker [~mucker@183.83.51.123] has joined #scheme 08:38:39 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 08:41:28 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 244 seconds] 08:44:04 mucker [~mucker@183.83.51.123] has joined #scheme 08:44:08 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 08:45:24 -!- cyphase [~cyphase@unaffiliated/cyphase] has quit [Ping timeout: 256 seconds] 08:46:49 jesusito [~user@90.165.181.186] has joined #scheme 08:49:27 mucker [~mucker@183.83.51.123] has joined #scheme 08:49:36 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 08:51:15 Anyone know of a database with native support for S-expressions? 08:51:26 There are some DBs, I know, for XML; wonder if they can be adapted. 08:53:04 cdidd [~cdidd@95-24-107-164.broadband.corbina.ru] has joined #scheme 08:54:30 mucker [~mucker@183.83.51.123] has joined #scheme 08:55:02 Oleg on a different but possibly related problem: . 08:57:36 jewel [~jewel@183.62.46.82] has joined #scheme 08:57:54 cyphase [~cyphase@unaffiliated/cyphase] has joined #scheme 09:05:08 -!- antithesis [~antithesi@s51476e07.adsl.wanadoo.nl] has quit [Quit: yes leaving] 09:17:19 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 09:18:12 mucker [~mucker@183.83.51.123] has joined #scheme 09:18:31 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 272 seconds] 09:18:38 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Connection reset by peer] 09:18:42 -!- mutley89 [~mutley89@cpc10-hudd10-2-0-cust160.4-1.cable.virginmedia.com] has quit [Quit: Leaving] 09:24:01 mucker [~mucker@183.83.51.123] has joined #scheme 09:24:14 -!- tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has quit [Ping timeout: 272 seconds] 09:29:57 -!- mucker [~mucker@183.83.51.123] has quit [Read error: Operation timed out] 09:33:29 mucker [~mucker@183.83.51.123] has joined #scheme 09:35:55 jewel [~jewel@183.62.46.82] has joined #scheme 09:37:09 Hmm, turns out this thing called eXist () would handle S-expressions with a custom writer. 09:37:35 They have to be serialized to nodes; but, what the hell: saves a trip through XML. 09:40:42 -!- gravicappa [~gravicapp@ppp91-77-221-19.pppoe.mtu-net.ru] has quit [Ping timeout: 272 seconds] 09:42:01 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 265 seconds] 09:45:12 -!- mucker [~mucker@183.83.51.123] has quit [Ping timeout: 252 seconds] 09:46:59 mucker [~mucker@183.83.51.123] has joined #scheme 09:47:43 masm [~masm@bl18-51-111.dsl.telepac.pt] has joined #scheme 09:48:38 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 09:50:00 tomobrien [~tomobrien@host-92-2-79-163.as43234.net] has joined #scheme 09:51:13 -!- REPLeffect [~REPLeffec@69.54.115.254] has quit [Ping timeout: 244 seconds] 09:54:59 antithesis [~antithesi@s51476e07.adsl.wanadoo.nl] has joined #scheme 09:56:24 gravicappa [~gravicapp@ppp91-77-186-219.pppoe.mtu-net.ru] has joined #scheme 09:58:23 ijp [~user@host81-159-28-102.range81-159.btcentralplus.com] has joined #scheme 09:58:55 jewel [~jewel@183.62.46.82] has joined #scheme 10:01:09 -!- pygospa [~Pygosceli@kiel-4dbed0fd.pool.mediaWays.net] has quit [Read error: Operation timed out] 10:02:11 pygospa [~Pygosceli@kiel-5f77b6b6.pool.mediaWays.net] has joined #scheme 10:04:15 REPLeffect [~REPLeffec@69.54.115.254] has joined #scheme 10:07:45 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 244 seconds] 10:20:29 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Read error: Connection reset by peer] 10:21:11 -!- b1rkh0ff [~b1rkh0ff@178.77.20.215] has quit [Ping timeout: 244 seconds] 10:23:43 jewel [~jewel@183.62.46.82] has joined #scheme 10:34:26 b1rkh0ff [~b1rkh0ff@178.77.25.45] has joined #scheme 10:37:49 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 10:39:18 -!- mucker [~mucker@183.83.51.123] has quit [Quit: leaving] 10:41:00 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 256 seconds] 10:44:42 -!- tomobrien [~tomobrien@host-92-2-79-163.as43234.net] has quit [Quit: Lost terminal] 10:51:22 Arafangion [~Arafangio@220-244-108-23.static.tpgi.com.au] has joined #scheme 10:57:57 jewel [~jewel@183.62.46.82] has joined #scheme 10:58:49 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 11:06:04 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Ping timeout: 250 seconds] 11:06:49 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 245 seconds] 11:07:10 -!- rvchangue [~rvchangue@unaffiliated/rvchangue] has quit [Ping timeout: 244 seconds] 11:07:44 attila_lendvai [~attila_le@188-143-65-33.pool.digikabel.hu] has joined #scheme 11:07:45 -!- attila_lendvai [~attila_le@188-143-65-33.pool.digikabel.hu] has quit [Changing host] 11:07:45 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #scheme 11:20:34 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 11:23:17 jewel [~jewel@183.62.46.82] has joined #scheme 11:27:58 ThePawnBreak [Cristi@94.177.108.25] has joined #scheme 11:30:20 annodomini [~lambda@c-76-23-156-75.hsd1.ma.comcast.net] has joined #scheme 11:30:20 -!- annodomini [~lambda@c-76-23-156-75.hsd1.ma.comcast.net] has quit [Changing host] 11:30:20 annodomini [~lambda@wikipedia/lambda] has joined #scheme 11:34:04 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 272 seconds] 11:41:00 ijp` [~user@host81-159-31-5.range81-159.btcentralplus.com] has joined #scheme 11:44:00 ijp`` [~user@host86-149-109-20.range86-149.btcentralplus.com] has joined #scheme 11:44:11 -!- ijp [~user@host81-159-28-102.range81-159.btcentralplus.com] has quit [Ping timeout: 272 seconds] 11:47:22 -!- ijp` [~user@host81-159-31-5.range81-159.btcentralplus.com] has quit [Ping timeout: 272 seconds] 11:48:25 leo2007 [~leo@222.130.134.167] has joined #scheme 11:51:00 jewel [~jewel@183.62.46.82] has joined #scheme 11:59:25 teiresias [~teiresias@archlinux/trusteduser/teiresias] has joined #scheme 12:08:46 -!- leo2007 [~leo@222.130.134.167] has quit [Quit: rcirc on GNU Emacs 24.0.96.1] 12:13:50 leo2007 [~leo@222.130.134.167] has joined #scheme 12:16:20 -!- robolobster54 [~robolobst@77.241.58.140] has quit [Read error: Connection reset by peer] 12:16:32 robolobster54 [~robolobst@77.241.58.140] has joined #scheme 12:17:30 -!- jesusito [~user@90.165.181.186] has left #scheme 12:17:41 jeapostrophe [~jay@racket/jeapostrophe] has joined #scheme 12:27:09 -!- MichaelRaskin [~MichaelRa@3ad50e34.broker.freenet6.net] has quit [Ping timeout: 248 seconds] 12:27:46 -!- REPLeffect [~REPLeffec@69.54.115.254] has quit [Ping timeout: 244 seconds] 12:28:33 soveran [~soveran@186.19.214.247] has joined #scheme 12:31:42 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 272 seconds] 12:32:30 MrFahrenheit [~RageOfTho@users-55-233.vinet.ba] has joined #scheme 12:40:48 REPLeffect [~REPLeffec@69.54.115.254] has joined #scheme 12:41:40 -!- ijp`` [~user@host86-149-109-20.range86-149.btcentralplus.com] has quit [Quit: The garbage collector got me] 12:42:41 what does %% mean in scheme? 12:44:46 Just a symbol 12:45:18 This is the context (define-propagator (c:similar-triangles s-ba h-ba s h) 12:45:18 (c:== (ce:* s-ba %% h-ba) 12:45:18 (ce:* s %% h))) 12:45:22 oops. 12:45:30 well thats from a certain extension called propagators. 12:45:39 It may be significant to the extension 12:45:48 E.g. like => is significant during a "cond" 12:45:59 hmm let me review the manual 12:46:15 It's not present in the manual 12:47:50 then you might wanna review the source code 12:48:45 jewel [~jewel@183.62.46.82] has joined #scheme 12:48:54 getpwnam [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 12:52:27 tomobrien [~tomobrien@host-92-2-79-163.as43234.net] has joined #scheme 12:57:40 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 12:59:39 -!- lastwill [~will@bb1.reu.89-16-9-24.adsl.only.fr] has quit [Quit: Quitte] 13:03:21 homie [~levgue@xdsl-78-35-174-240.netcologne.de] has joined #scheme 13:07:58 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 252 seconds] 13:11:43 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Quit: Computer has gone to sleep.] 13:23:33 -!- Arafangion [~Arafangio@220-244-108-23.static.tpgi.com.au] has quit [Ping timeout: 248 seconds] 13:26:04 jewel [~jewel@183.62.46.82] has joined #scheme 13:31:52 -!- jewel [~jewel@183.62.46.82] has quit [Ping timeout: 272 seconds] 13:38:57 -!- getpwnam [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Ping timeout: 260 seconds] 13:40:37 -!- wingo [~wingo@90.164.198.39] has quit [Ping timeout: 244 seconds] 13:42:31 -!- chu [~mathew.ba@CPE-124-176-25-97.lns2.dea.bigpond.net.au] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 13:51:59 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 13:52:24 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #scheme 13:52:32 -!- annodomini [~lambda@wikipedia/lambda] has quit [Quit: annodomini] 13:52:35 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Client Quit] 13:55:23 bfig [~b_fin_g@r186-52-138-144.dialup.adsl.anteldata.net.uy] has joined #scheme 13:55:46 -!- robolobster54 [~robolobst@77.241.58.140] has quit [Ping timeout: 265 seconds] 13:58:12 bhrgunatha [~chatzilla@118-170-202-222.dynamic.hinet.net] has joined #scheme 14:01:27 -!- Radium [~rajesh.na@117.203.1.33] has quit [Read error: Connection reset by peer] 14:05:16 dnolen [~user@cpe-98-14-92-234.nyc.res.rr.com] has joined #scheme 14:06:12 djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has joined #scheme 14:06:46 -!- bhrgunatha [~chatzilla@118-170-202-222.dynamic.hinet.net] has quit [Quit: ChatZilla 0.9.88.2 [Firefox 12.0/20120426131355]] 14:07:02 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 14:08:10 -!- imphasing|home [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Quit: RESTART] 14:10:32 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 14:10:49 -!- imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Read error: Connection reset by peer] 14:10:50 terra-and-luna [~Emilia@fluttershy.aiiane.com] has joined #scheme 14:11:29 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 14:13:34 choas [~lars@p4FDC49D3.dip.t-dialin.net] has joined #scheme 14:17:09 -!- jeapostrophe [~jay@racket/jeapostrophe] has quit [Read error: Operation timed out] 14:25:20 mark_weaver [~user@209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 14:25:23 Rubix [~Rubix@c-24-63-88-226.hsd1.ma.comcast.net] has joined #scheme 14:32:10 -!- samth_ is now known as samth 14:32:32 langmartin [~user@host-68-169-158-140.WISOLT2.epbfi.com] has joined #scheme 14:33:46 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Read error: Operation timed out] 14:46:51 getpwnam [~ian@128.249.96.123] has joined #scheme 14:47:15 optikalmouse [~user@gw.trapeze.com] has joined #scheme 14:47:29 complaints about scheme by 1st year CS students: valid or no? how do I counter them? 14:47:33 !! 14:47:36 what kind of complaints? 14:47:44 "This doesn't look like C!" 14:49:47 lack of popularity 14:49:53 sigh 14:50:02 and more "other students complain about it why shouldn't I too dislike it?" 14:50:06 the most irrelevant objection ever 14:50:24 practicality is another one I heard... :/ 14:50:29 sigh 14:50:33 i don't envy you 14:50:43 still, they're perfect learning-resistant budding mainstreamers. 14:50:45 good for them. 14:50:49 :p 14:51:43 indeed, would rather learn javascript than scheme :( 14:52:12 maybe that's the only strategy... 14:52:13 "This doesn't look like C" is indeed a valid observation 14:52:22 LeoNerd: is it a reason for avoiding it? 14:52:32 In some cases it's a reason -to- use it ;) 14:52:37 LeoNerd: absolutely. 14:53:01 Most languages are, to some degree or other, similar to most other languages 14:53:12 Features get borrowed, reused, reimplemented, but a lot of the underlying ideas remain 14:53:17 optikalmouse: i don't understand kids these days. aren't they supposed to be challenging old-timers with new ideas? but in software. it;s the old-timers who are interested in new ideas and the kids who want to use old, irrelevant stuff. 14:53:21 Anyone who knows Scheme already half-knows most of the other languages aroudn 14:53:33 LeoNerd: yes. 14:53:38 Anyone who knows Scheme could pick up C or Perl or maybe-Python given not too much trouble. 14:53:51 LeoNerd: in fact Scheme is a good preparation for javascript that uses closures. 14:53:59 LeoNerd: Eich was a Schemer, of course. 14:54:05 What I'd say to a _college student_ is to learn a language, a good one, doesn't matter overly which one.. just ensure it's one that has lots of reuseable ideas you can bring across into other languages 14:54:10 LeoNerd: yes. 14:54:17 optikalmouse: ^^ this is a good rationale. 14:54:31 Once you get into the real world you'll have to switch between quite a few different languages /anyway/ so complaining about just one will get you nowhere. 14:54:35 optikalmouse: btw, what do _they_ think is an important thing to learn? 14:54:39 Just today I've been writing C, Perl, Python, Java,... 14:54:41 LeoNerd: absolutely. 14:54:43 it's interesting, I actually went the opposite way. I started with VB -> C/C++ -> Java -> Python -> Lisp/Scheme 14:54:43 managed to avoid bash today so far 14:55:02 so javascript isn't a bad way to start then? 14:55:11 optikalmouse: at least it has closures. 14:55:20 optikalmouse: but it depends on objective. 14:55:25 optikalmouse: what text are they following? 14:55:46 haven't a clue :S 14:55:59 JS isn't -baad- but it has a few oddities 14:56:23 they're halving their career half-life by ignoring Lisps 14:56:35 so it's kind of self-punishing 14:56:57 yeah, they'll find work... for a while. 14:57:18 i don't think the remaining C++ jobs will be very pretty in 2027 14:57:28 Hah 14:57:37 C++ is just this decade's COBOL, really 14:57:41 about the time they have mortgages and kids 14:57:44 LeoNerd: yep. 14:57:48 LeoNerd: precisely. 14:58:07 tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has joined #scheme 14:58:44 -!- jrslepak [~jrslepak@c-71-233-148-123.hsd1.ma.comcast.net] has quit [Quit: This computer has gone to sleep] 15:00:44 my latest rule of thumb is, popularity is a gauge of _past_ relevance not future relevance. 15:00:56 Oooh. that's a good one, yes. 15:01:15 people don't understand this, on the whole. it's amazing. 15:01:42 there is a real cost to planning your career on the Billboard Top 10 Languages Today 15:01:49 or "Stuff my friends have heard of" 15:04:33 I wonder how long till web development will require more advanced concepts 15:04:42 how about 'now' 15:05:00 can I get a recommendation on a scheme implementation for a dumb-ass noob? Extra credit for any supported idiot-proofing in the implementation. 15:05:06 How about "damnit we should have been using them 5 years ago but all the developers weren't with it" 15:05:07 :) 15:05:08 Rubix: Racket 15:05:19 optikalmouse: it's been very interesting hanging out in the Scala+Lift functional web camp for a bit. 15:05:30 Rubix: i like CHicken 15:05:40 optikalmouse: saw that, looked pretty glossy ...which may be a good thing IDK 15:05:40 Rubix: but i guess Racket is more idiot-proof ;-) 15:05:44 qu1j0t3: how so? 15:06:06 optikalmouse: web frameworks in a really modern language (type inference, pattern matching) ... pretty impressive. 15:06:09 qu1j0t3: I've been using that mostly... I like the C-code cheat mode 15:07:37 Rubix: I was using Racket, otherwise I was using Emacs + (bigloo or guile or scheme48 or scsh) 15:09:24 annodomini [~lambda@173-14-129-9-NewEngland.hfc.comcastbusiness.net] has joined #scheme 15:09:24 -!- annodomini [~lambda@173-14-129-9-NewEngland.hfc.comcastbusiness.net] has quit [Changing host] 15:09:24 annodomini [~lambda@wikipedia/lambda] has joined #scheme 15:09:33 kk` [~kk@unaffiliated/kk/x-5380134] has joined #scheme 15:11:10 optikalmouse: noted; I'll look into those 15:11:45 thanks for the opinions optikalmouse, qu1j0t3 ; 15:11:55 I appreciate it 15:12:16 Rubix: yw 15:13:38 qu1j0t3: lift looks interesting, but I can't help but wonder how much of that can be replicated with scheme,common lisp, smalltalk, etc. I take it though that the choice was been Java and Scala :p 15:14:41 optikalmouse: i'm sure it can, but Scala is a static system, which gives me more comfort right now -- i'm kinda burned out on dynamic for now because i have to work with PHP. 15:14:47 -!- TDJACR [~TDJACR@lilug/member/tdjacr] has quit [Ping timeout: 250 seconds] 15:14:59 optikalmouse: Weblocks and Seaside and such are interesting too. just not where i'm at right now. 15:16:11 TDJACR [~TDJACR@lilug/member/tdjacr] has joined #scheme 15:16:16 I tried weblocks but the docs weren't great last time I checked 15:16:44 Seaside was fairly solid, though some of the more obscure classes weren't too well documented, making it harder to use. for typical use cases it was great :p 15:29:58 -!- djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has quit [Read error: Connection reset by peer] 15:30:12 ExitSuccess [c2fea714@gateway/web/freenode/ip.194.254.167.20] has joined #scheme 15:30:21 -!- pyro- is now known as SleepingPanda 15:30:30 kevin_ [c2fea714@gateway/web/freenode/ip.194.254.167.20] has joined #scheme 15:31:37 djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has joined #scheme 15:38:31 jao [~user@160.Red-81-39-169.dynamicIP.rima-tde.net] has joined #scheme 15:38:46 -!- jao [~user@160.Red-81-39-169.dynamicIP.rima-tde.net] has quit [Changing host] 15:38:46 jao [~user@pdpc/supporter/professional/jao] has joined #scheme 15:44:49 robolobster54 [~robolobst@121.red-80-28-228.adsl.static.ccgg.telefonica.net] has joined #scheme 15:49:07 -!- robolobster54 [~robolobst@121.red-80-28-228.adsl.static.ccgg.telefonica.net] has quit [Client Quit] 15:53:22 hi everybody ! I have some problems with scheme. I would like to know how to go to the next line in a file.. Actually I can read caractere by caractere on A line so I can't go to the next line. if somebody can help me :) 15:54:44 kevin_: What Scheme implementation are you using? 15:56:01 how can i see that? 15:57:47 kevin_: if you don't know, nevermind. if you're using 'read-char' to read the characters, you should be able to read the '#\newline' character like any other. 15:58:21 kevin_: what's the name of the scheme program you started or clicked on? Racket? DrScheme? 15:58:41 -!- djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has quit [Read error: Connection reset by peer] 15:59:41 I'm programming on Guile 15:59:56 kevin_: ah, that's the implementation I use :) 16:00:24 djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has joined #scheme 16:00:26 kevin_: there are more convenient ways to read line-by-line on Guile. 16:00:44 kevin_: (use-modules (ice-9 rdelim)) 16:00:45 http://www.gnu.org/software/guile/manual/html_node/Line_002fDelimited.html#Line_002fDelimited 16:00:46 http://tinyurl.com/8yc2xgf 16:01:03 near the top of your program. 16:01:31 and then (read-line) will read the rest of the current line, and leave you at the next line. 16:02:18 it returns the contents of the line (as a string) _without_ the newline, by default. it can be tweaked to include the newline if you like. 16:02:34 thank you for your help :) i will try it directly ! 16:03:02 kevin_: you're welcome! for Guile questions, you can also ask on #guile. I'm on that channel now too. 16:04:03 ok, thank you ! 16:04:50 -!- djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has quit [Read error: Connection reset by peer] 16:06:42 djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has joined #scheme 16:06:52 -!- bfig [~b_fin_g@r186-52-138-144.dialup.adsl.anteldata.net.uy] has quit [Ping timeout: 255 seconds] 16:08:38 Hi everyone. I am a newbie in scheme and i would know if it is possible to use lists with more memory space. In fact i want to read a big text and put each words in an unique list. obviously i have a stack overflow error 16:09:01 ExitSuccess: which scheme implementation? 16:09:05 jeapostrophe [~jay@racket/jeapostrophe] has joined #scheme 16:09:25 i'm using guile 16:09:27 ExitSuccess: what are you doing with the items in the list afterward? 16:09:52 ExitSuccess: stack overflow does not happen simply because a list is too big. it's because of the way you wrote your program. 16:10:55 ExitSuccess: would you be willing to share your code with us? 16:11:12 ExitSuccess: it would make it easier to help you 16:11:35 optikalmouse : i will have to extract information like how occurance of a word there is etc.. 16:12:09 ExitSuccess: have you been taught the concept of tail recursion, or iterative processes vs recursive processes? 16:12:19 mark_weaver: Can i simply past the code here? 16:13:07 chu [~mathew.ba@CPE-124-176-25-97.lns2.dea.bigpond.net.au] has joined #scheme 16:13:32 Can someone remind us what's a good web site for pasting scheme snippets? I have my own web site so I always forget :) 16:14:25 *qu1j0t3* is sad now pocoo is gone 16:14:31 -!- REPLeffect [~REPLeffec@69.54.115.254] has quit [Quit: bye] 16:14:39 ExitSuccess: can you paste it to http://paste.lisp.org/new/scheme ? 16:14:58 mark_weaver: http://paste.call-cc.org/ maybe? 16:14:59 and then tell us the URL of your snippet? 16:15:05 I tend to use pastie.org, which does a reasonable job on a lot of languages. There are nicer lisp-specific ones that do things like paren highlighting 16:15:48 hastebin can't highlight many of the languages i like to use. :| http://www.hastebin.com/vebayutuho.scm 16:16:18 here the link : http://paste.lisp.org/display/129481 16:16:33 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 16:17:05 *eli* sighs 16:17:25 There should be some irc bot cemetery around here somewhere. 16:18:17 ExitSuccess: first off, you're calling a procedure named 'tmp' that I don't see defined in that snippet. 16:19:06 ExitSuccess: presumably that 'tmp' was 'creat-list' at some point, am I right? 16:19:25 mark_weaver : oh sorry, it is actually 'creat-list' 16:19:38 yes you are :-) 16:20:25 ExitSuccess: okay, so the problem is that your recursive call to 'creat-list' is not in "tail position", which means that this generates a recursive process instead of an iterative process. 16:21:34 ExitSuccess: the basic problem is that it has to do something _after_ the recursive call: it has to take the result of the recursive call and 'cons' word to the front of it. 16:22:00 REPLeffect [~REPLeffec@69.54.115.254] has joined #scheme 16:22:16 eli: :D 16:22:17 ExitSuccess: and that means that it must remember (on the stack) to add 'word' to the front of the list. it needs to do this for every word, so if there are a lot of words it will fill up the stack. 16:23:35 ExitSuccess: in order to not use up lots of stack space, you have to arrange for the recursive call to be in "tail position" which is just a fancy way of saying that you just return its result directly, without doing anything else to it, so it doesn't have to remember anything on the stack. 16:25:21 the canonical strategy for doing this for this kind of program is as follows: add another parameter to the procedure, which will accumulate all of the words you've already seen, and then when you reach EOF, all of your words are on that list, but in reverse order, so you just need to reverse them. 16:26:47 ExitSuccess: you want something like this: 16:26:47 (define (creat-list file l) 16:26:47 (let ((word (read file))) 16:26:47 (if (eof-object? word) 16:26:50 (reverse l) 16:26:55 (creat-list file (cons word l))))) 16:27:08 mark_weaver : so i have to run through the list one time without doing anything, and then construct the reverse list 16:27:59 ExitSuccess: you're not doing nothing.. you're constructing the list in reverse order as you run through the list. 16:28:22 ExitSuccess: when you reach the end, you reverse it to put it back in the correct order. 16:28:53 oh! i see. it reminds me some OCaml issues... ^^ 16:29:00 thanks a lot :) 16:29:10 ExitSuccess: glad to help! 16:30:06 lbc [~quassel@87-104-104-122-dynamic-customer.profibernet.dk] has joined #scheme 16:32:23 -!- imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Read error: Connection reset by peer] 16:32:35 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 16:48:46 pejusify [~Peter@HSI-KBW-078-043-114-190.hsi4.kabel-badenwuerttemberg.de] has joined #scheme 16:51:49 -!- homie [~levgue@xdsl-78-35-174-240.netcologne.de] has quit [Read error: Operation timed out] 16:52:49 homie` [~levgue@xdsl-87-79-248-55.netcologne.de] has joined #scheme 17:04:16 -!- homie` [~levgue@xdsl-87-79-248-55.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 17:06:08 kk`` [~kk@77.107.164.131] has joined #scheme 17:06:22 MichaelRaskin [~MichaelRa@3ad50e34.broker.freenet6.net] has joined #scheme 17:07:00 tomodo [~tomodo@gateway/tor-sasl/tomodo] has joined #scheme 17:08:28 -!- kk` [~kk@unaffiliated/kk/x-5380134] has quit [Ping timeout: 272 seconds] 17:08:48 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Ping timeout: 245 seconds] 17:10:48 karswell [~coat@93-97-29-243.zone5.bethere.co.uk] has joined #scheme 17:11:05 ijp [~user@host109-150-134-56.range109-150.btcentralplus.com] has joined #scheme 17:11:46 homie [~levgue@xdsl-87-79-248-55.netcologne.de] has joined #scheme 17:13:54 adu [~ajr@pool-173-66-253-53.washdc.fios.verizon.net] has joined #scheme 17:15:26 -!- b1rkh0ff [~b1rkh0ff@178.77.25.45] has quit [Ping timeout: 272 seconds] 17:21:16 tupi [~david@139.82.89.157] has joined #scheme 17:23:35 -!- chu [~mathew.ba@CPE-124-176-25-97.lns2.dea.bigpond.net.au] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 17:26:59 rvchangue [~rvchangue@unaffiliated/rvchangue] has joined #scheme 17:28:23 -!- leo2007 [~leo@222.130.134.167] has quit [Quit: rcirc on GNU Emacs 24.0.97.1] 17:30:58 b1rkh0ff [~b1rkh0ff@178.77.25.45] has joined #scheme 17:40:24 -!- MichaelRaskin [~MichaelRa@3ad50e34.broker.freenet6.net] has left #scheme 17:43:19 -!- homie [~levgue@xdsl-87-79-248-55.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 17:46:14 -!- kevin_ [c2fea714@gateway/web/freenode/ip.194.254.167.20] has quit [Quit: Page closed] 17:46:41 -!- kk`` is now known as kk` 17:49:42 -!- cdidd [~cdidd@95-24-107-164.broadband.corbina.ru] has quit [Ping timeout: 265 seconds] 17:50:04 -!- lbc [~quassel@87-104-104-122-dynamic-customer.profibernet.dk] has quit [Remote host closed the connection] 17:50:40 -!- djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has quit [Read error: Connection reset by peer] 17:52:31 djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has joined #scheme 18:01:19 jrslepak [~jrslepak@129.10.228.117] has joined #scheme 18:05:31 sstrickl [~sstrickl@racket/sstrickl] has joined #scheme 18:06:08 -!- imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Ping timeout: 240 seconds] 18:06:53 booyaa` [~booyaa@adsl-67-121-157-253.dsl.pltn13.pacbell.net] has joined #scheme 18:08:23 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 18:09:55 kephas [~pierre@AStrasbourg-551-1-7-79.w92-141.abo.wanadoo.fr] has joined #scheme 18:10:05 -!- booyaa` [~booyaa@adsl-67-121-157-253.dsl.pltn13.pacbell.net] has quit [*.net *.split] 18:10:05 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [*.net *.split] 18:10:05 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [*.net *.split] 18:10:05 -!- acarrico [~acarrico@pppoe-68-142-39-85.gmavt.net] has quit [*.net *.split] 18:10:05 -!- nowhereman [~pierre@AStrasbourg-551-1-7-79.w92-141.abo.wanadoo.fr] has quit [*.net *.split] 18:10:05 -!- zxq9 [~zxq9@FL1-119-244-163-13.okn.mesh.ad.jp] has quit [*.net *.split] 18:10:05 -!- tessier [~treed@kernel-panic/copilotco] has quit [*.net *.split] 18:10:05 -!- cataska_ [~cataska@210.64.6.233] has quit [*.net *.split] 18:10:05 -!- jrslepak_neu [~jrslepak@punchout.ccs.neu.edu] has quit [*.net *.split] 18:10:23 jrslepak_neu [~jrslepak@punchout.ccs.neu.edu] has joined #scheme 18:10:41 booyaa` [~booyaa@adsl-67-121-157-253.dsl.pltn13.pacbell.net] has joined #scheme 18:10:41 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 18:10:41 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 18:10:41 acarrico [~acarrico@pppoe-68-142-39-85.gmavt.net] has joined #scheme 18:10:41 zxq9 [~zxq9@FL1-119-244-163-13.okn.mesh.ad.jp] has joined #scheme 18:10:41 tessier [~treed@kernel-panic/copilotco] has joined #scheme 18:10:41 cataska_ [~cataska@210.64.6.233] has joined #scheme 18:13:11 teurastaja [~chatzilla@modemcable113.198-176-173.mc.videotron.ca] has joined #scheme 18:13:44 whens freaking r7rs due? 18:14:07 is there another draft to be made? 18:23:48 (lambda (r6rs) (letrec ([wait (lambda (r7rs) (if (null? r7rs) wait (update-current-standard! r6rs)))] [update-current-standard! (lambda (rnrs) (set! rnrs r7rs))]) (wait r7rs))) 18:25:08 -!- tomobrien [~tomobrien@host-92-2-79-163.as43234.net] has quit [Ping timeout: 252 seconds] 18:27:45 -!- ExitSuccess [c2fea714@gateway/web/freenode/ip.194.254.167.20] has quit [Quit: Page closed] 18:31:02 -!- djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has quit [Read error: Connection reset by peer] 18:32:18 djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has joined #scheme 18:33:51 tomobrien [~tomobrien@host-92-2-79-163.as43234.net] has joined #scheme 18:36:18 teurastaja: ask jcowan when he pops in 18:37:31 does he pop in often? 18:37:41 almost every day 18:38:08 what time window? 18:39:22 varies, but he's east coast time. usually evenings until late ~ midnight. 18:39:32 ok 18:39:36 thx 18:40:13 np 18:41:42 -!- Euthydemus [~euthydemu@unaffiliated/euthydemus] has quit [Read error: Connection reset by peer] 18:41:57 Euthydemus [~euthydemu@unaffiliated/euthydemus] has joined #scheme 18:42:08 -!- tupi [~david@139.82.89.157] has quit [Quit: Leaving] 18:45:20 -!- sstrickl [~sstrickl@racket/sstrickl] has left #scheme 18:45:47 sstrickl_away [~sstrickl@racket/sstrickl] has joined #scheme 18:46:40 -!- sstrickl_away is now known as sstrickl 18:47:25 -!- sstrickl [~sstrickl@racket/sstrickl] has left #scheme 18:47:44 sstrickl [~sstrickl@racket/sstrickl] has joined #scheme 18:49:35 -!- optikalmouse [~user@gw.trapeze.com] has left #scheme 18:50:58 -!- booyaa` [~booyaa@adsl-67-121-157-253.dsl.pltn13.pacbell.net] has quit [*.net *.split] 18:50:58 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [*.net *.split] 18:50:58 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [*.net *.split] 18:50:58 -!- acarrico [~acarrico@pppoe-68-142-39-85.gmavt.net] has quit [*.net *.split] 18:50:58 -!- zxq9 [~zxq9@FL1-119-244-163-13.okn.mesh.ad.jp] has quit [*.net *.split] 18:50:58 -!- tessier [~treed@kernel-panic/copilotco] has quit [*.net *.split] 18:50:58 -!- cataska_ [~cataska@210.64.6.233] has quit [*.net *.split] 18:51:44 booyaa` [~booyaa@adsl-67-121-157-253.dsl.pltn13.pacbell.net] has joined #scheme 18:51:44 copumpkin [~copumpkin@unaffiliated/copumpkin] has joined #scheme 18:51:44 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 18:51:44 acarrico [~acarrico@pppoe-68-142-39-85.gmavt.net] has joined #scheme 18:51:44 zxq9 [~zxq9@FL1-119-244-163-13.okn.mesh.ad.jp] has joined #scheme 18:51:44 tessier [~treed@kernel-panic/copilotco] has joined #scheme 18:51:44 cataska_ [~cataska@210.64.6.233] has joined #scheme 18:52:16 tuubow_ [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has joined #scheme 18:52:23 -!- tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 18:54:29 lcc [~user@unaffiliated/lcc] has joined #scheme 18:55:27 hash_table [~quassel@128.249.96.123] has joined #scheme 18:56:59 -!- hash_table is now known as brogrammer 18:57:08 -!- brogrammer is now known as hash_table 18:57:38 -!- hash_table is now known as bro_grammer 18:58:11 -!- jrslepak [~jrslepak@129.10.228.117] has quit [Quit: This computer has gone to sleep] 19:03:32 turbofail [~user@38.99.37.210] has joined #scheme 19:03:33 bro_down [~bro@128.249.96.10] has joined #scheme 19:07:32 -!- kk` [~kk@77.107.164.131] has quit [Ping timeout: 272 seconds] 19:14:06 should I call sicp the purple book or the wizard book? hm... 19:14:38 -!- imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Ping timeout: 245 seconds] 19:16:46 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 19:17:54 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 19:20:34 add^_ [~add^_^@m90-141-56-77.cust.tele2.se] has joined #scheme 19:22:29 lcc: the good book 19:23:36 call it 'how to program in 12 easy steps' 19:24:13 :) 19:28:07 rudybot: what would you call it? 19:28:08 ijp: first time I call it it says f not defined. 19:28:10 teurastaja: I recently heard them say it was likely to be ratified later this year, maybe in the fall. 19:31:51 last year they said the same 19:32:05 and then theres the second language 19:32:12 rudybot: boom-tish! 19:32:12 qu1j0t3: eh? Try "rudybot: help". 19:32:15 are they partying all the time or what? 19:32:46 *cough* second continuum of languages *cough* 19:33:07 rudybot: help 19:33:07 teurastaja: bug ..., help [], version, quote, source, url, seen , uptime, t8 ..., init [], eval ..., give ..., apropos ..., desc , doc 19:33:36 rudybot: source 19:33:37 teurastaja: git clone git://github.com/offby1/rudybot.git 19:33:55 rudybot: sing dance and make merry 19:33:56 ijp: well, that was certainly a merry holiday for the potential victims that escaped the bomber's grasp :) 19:34:59 rudybot: help url 19:34:59 teurastaja: url: my web page 19:35:05 his responses have been less satisfactory of late IMO 19:35:25 rudybot: give 19:35:26 teurastaja: expecting: give ... 19:35:37 rudybot: init 19:35:38 teurastaja: your sandbox is ready 19:35:45 rudybot: help init 19:35:45 teurastaja: init []: initialize a sandbox, can be 'r5rs, 'scheme, 'scheme/base, etc 19:36:24 rudybot: help bug 19:36:24 teurastaja: bug ...: You suck. 19:36:25 teurastaja: best to do that in private. /query rudybot 19:36:39 rudybot: fuck you! 19:36:40 teurastaja: ,fsck is also fuck 19:37:14 rudybot: do you think we should talk in private? 19:37:14 teurastaja: I actually wanted to find out why you were using the -private list; I didn't mean to slap you down hard publicly. 19:37:41 rudybot: now thats a smart answer 19:37:42 teurastaja: oh, geez, zsh was doing smart stuff 19:38:33 that wasnt so smart 19:39:46 teurastaja: I for one am glad that they're not rushing something out. There are still some issues to resolve, and R6RS was rushed out with some major problems. 19:40:07 *qu1j0t3* nods 19:41:19 then let them take 20 years 19:41:27 what those problems are, however, no-one agrees on 19:42:19 hmm... going out, back later 19:44:18 eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has joined #scheme 19:44:55 -!- jonrafkind [~jon@racket/jonrafkind] has quit [Quit: Ex-Chat] 19:45:23 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 19:47:26 -!- teurastaja [~chatzilla@modemcable113.198-176-173.mc.videotron.ca] has quit [Ping timeout: 272 seconds] 20:02:27 jrslepak [~jrslepak@nomad.ccs.neu.edu] has joined #scheme 20:02:55 -!- add^_ [~add^_^@m90-141-56-77.cust.tele2.se] has quit [Quit: add^_] 20:03:01 ijp: I haven't looked closely at it, but the syntactic records vs procedural records thing that will clinger complained about sounds pretty bad. 20:04:13 the other issues are more controversial, I'll grant you that :) 20:04:25 -!- bro_grammer is now known as hash_table 20:06:11 if you are talking about backwards compatibility with srfi 9, then the cure is worse than the disease 20:06:22 see srfi 99 20:07:11 http://www.ccs.neu.edu/home/will/R6RS/essay.txt 20:08:55 my chief objection to the r7rs effort is that instead of fixing issues, they threw everything out and started over 20:09:03 looking at it again, it was actually "Andre van Tonder's observation that incompatibilities between the syntactic and procedural record layers create a modularity problem: You cannot define a new record type that inherits from an existing record type without knowing whether the base type was defined by the syntactic or by the procedural layer." 20:09:37 which is both wasteful and insulting 20:10:52 -!- ThePawnBreak [Cristi@94.177.108.25] has quit [Ping timeout: 272 seconds] 20:11:49 There's a basic philosophical difference between r6rs and earlier efforts. I can understand and sympathize with both philosophies. 20:12:15 lambda the ultimate NIH 20:12:50 imphasin1 [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 20:12:57 but this debate has been hashed out here before, and I don't have anything new to add. 20:14:45 -!- imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Ping timeout: 248 seconds] 20:15:15 My opinion is that if an effort like the R6RS had happened 15 years earlier, Scheme would be more like Common Lisp today: more useful for practical programming, but much more flawed because of specifying too many details about things that were not yet understood well. 20:16:08 I think R7RS has the right idea: two standards, one small and one large, so we can have the best of both worlds. 20:16:39 -!- imphasin1 is now known as imphasing|home 20:16:41 r7rs large is a bait and switch 20:16:43 -!- imphasing|home [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Client Quit] 20:16:53 it promises a large standard library, but everything is optional 20:16:59 IMHO, R6RS rushed to specify too many details, over too many objections. 20:17:13 100+ modules means 2^100 + possible languages 20:17:17 imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 20:17:36 how exactly is that an improvement ? 20:17:50 we already have this: it's called srfis 20:18:04 and as jcowan's spreadsheet shows, adoption is a minefield 20:18:19 I've heard you say that before, but I don't buy it. The reality is that each library can simply list the optional features that are required to use that library. 20:18:32 which is what we have now 20:18:51 if a library is popular, that will put pressure on the scheme implementations to implement the optional features that are needed. 20:19:13 yeah, and only three are that popular in practice 20:19:18 1,6, and 9 20:19:45 R6RS didn't solve the problem any better, because in practice it was simply rejected by a large portion of our community. 20:20:10 by the same adoption standard, r5rs was an abject failure 20:20:33 and call/cc has been firmly rejected by the scheme community 20:21:22 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Read error: Operation timed out] 20:21:30 but no-one would here would make that claim 20:22:48 I understand respect your perspective. Honestly, I do, and I don't have anything new to say that hasn't been said here before. 20:23:19 fair enough, I'm going to take a break to cool off before I really start ranting 20:23:23 -!- ijp [~user@host109-150-134-56.range109-150.btcentralplus.com] has left #scheme 20:23:35 as you know, I did a lot of work to bring Guile numerics in compliance with the R6RS, and I've also worked to get the good parts of R6RS numerics into R7RS. 20:27:10 -!- 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)] 20:29:27 -!- soveran [~soveran@186.19.214.247] has quit [Read error: Connection reset by peer] 20:29:36 soveran [~soveran@186.19.214.247] has joined #scheme 20:32:21 igibson [~turnip@128.249.96.10] has joined #scheme 20:43:51 lem_e_tweakit [~ian@128.249.96.123] has joined #scheme 20:45:42 -!- tuubow_ [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has quit [Ping timeout: 272 seconds] 20:47:32 ijp [~user@host109-150-134-56.range109-150.btcentralplus.com] has joined #scheme 20:53:51 -!- dnolen [~user@cpe-98-14-92-234.nyc.res.rr.com] has quit [Ping timeout: 265 seconds] 20:58:43 amgarchIn9 [~amgarchin@p4FD61943.dip0.t-ipconnect.de] has joined #scheme 21:04:29 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has left #scheme 21:04:42 teurastaja [~chatzilla@modemcable113.198-176-173.mc.videotron.ca] has joined #scheme 21:06:30 -!- getpwnam [~ian@128.249.96.123] has quit [Ping timeout: 244 seconds] 21:06:42 -!- hash_table [~quassel@128.249.96.123] has quit [Ping timeout: 245 seconds] 21:06:54 -!- lem_e_tweakit [~ian@128.249.96.123] has quit [Ping timeout: 265 seconds] 21:09:33 tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has joined #scheme 21:13:37 -!- eni [~eni@gob75-5-82-230-88-217.fbx.proxad.net] has quit [Quit: Leaving] 21:13:39 -!- antithesis [~antithesi@s51476e07.adsl.wanadoo.nl] has quit [Quit: yes leaving] 21:14:23 bfig [~b_fin_g@r186-52-161-76.dialup.adsl.anteldata.net.uy] has joined #scheme 21:14:53 homie [~levgue@xdsl-87-79-248-55.netcologne.de] has joined #scheme 21:20:44 imphasin1 [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has joined #scheme 21:21:00 -!- imphasin1 is now known as imphasing|home 21:21:10 -!- teurastaja [~chatzilla@modemcable113.198-176-173.mc.videotron.ca] has quit [Ping timeout: 272 seconds] 21:21:47 -!- imphasing [~Alex@97-81-115-30.dhcp.gwnt.ga.charter.com] has quit [Ping timeout: 272 seconds] 21:26:43 -!- djcb [~user@a88-114-95-13.elisa-laajakaista.fi] has quit [Remote host closed the connection] 21:32:08 teurastaja [~chatzilla@modemcable113.198-176-173.mc.videotron.ca] has joined #scheme 21:32:52 -!- soveran [~soveran@186.19.214.247] has quit [Remote host closed the connection] 21:33:00 -!- pejusify [~Peter@HSI-KBW-078-043-114-190.hsi4.kabel-badenwuerttemberg.de] has left #scheme 21:33:20 r_r_r [~chatzilla@77.126.137.243] has joined #scheme 21:35:26 -!- tomobrien [~tomobrien@host-92-2-79-163.as43234.net] has quit [Ping timeout: 244 seconds] 21:38:04 -!- jrslepak [~jrslepak@nomad.ccs.neu.edu] has quit [Quit: This computer has gone to sleep] 21:39:17 -!- jonrafkind [~jon@racket/jonrafkind] has quit [Ping timeout: 265 seconds] 21:39:38 -!- leppie [~lolcow@196-215-35-135.dynamic.isadsl.co.za] has quit [Ping timeout: 245 seconds] 21:41:36 -!- gravicappa [~gravicapp@ppp91-77-186-219.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 21:42:00 -!- langmartin [~user@host-68-169-158-140.WISOLT2.epbfi.com] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 21:42:12 r_r_r_ [~chatzilla@77.126.137.243] has joined #scheme 21:42:20 -!- r_r_r_ [~chatzilla@77.126.137.243] has quit [Client Quit] 21:42:23 -!- pygospa [~Pygosceli@kiel-5f77b6b6.pool.mediaWays.net] has quit [Disconnected by services] 21:42:32 pygospa [~Pygosceli@kiel-4d067ba4.pool.mediaWays.net] has joined #scheme 21:42:47 r_r_r_ [~chatzilla@77.126.137.243] has joined #scheme 21:43:39 -!- amgarchIn9 [~amgarchin@p4FD61943.dip0.t-ipconnect.de] has quit [Quit: Konversation terminated!] 21:43:41 -!- r_r_r_ [~chatzilla@77.126.137.243] has quit [Client Quit] 21:43:46 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 21:44:08 -!- r_r_r [~chatzilla@77.126.137.243] has quit [Ping timeout: 240 seconds] 21:44:15 leppie [~lolcow@196-210-156-84.dynamic.isadsl.co.za] has joined #scheme 21:44:16 r_r_r_ [~chatzilla@77.126.137.243] has joined #scheme 21:47:04 -!- r_r_r_ [~chatzilla@77.126.137.243] has quit [Client Quit] 21:52:38 -!- jeapostrophe [~jay@racket/jeapostrophe] has quit [Ping timeout: 240 seconds] 21:52:50 r_r_r [~chatzilla@77.126.137.243] has joined #scheme 21:54:03 jonrafkind [~jon@racket/jonrafkind] has joined #scheme 21:56:17 lem_e_tweakit [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 21:56:25 getpwnam [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 21:57:05 hash_table [~quassel@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 21:59:15 arcfide [~arcfide@c-98-223-204-153.hsd1.in.comcast.net] has joined #scheme 21:59:24 -!- TDJACR [~TDJACR@lilug/member/tdjacr] has quit [Read error: Connection reset by peer] 22:00:05 TDJACR [~TDJACR@lilug/member/tdjacr] has joined #scheme 22:00:41 -!- choas [~lars@p4FDC49D3.dip.t-dialin.net] has quit [Quit: leaving] 22:03:55 -!- teurastaja [~chatzilla@modemcable113.198-176-173.mc.videotron.ca] has quit [Quit: ChatZilla 0.9.88.2 [SeaMonkey 2.9.1/20120429011004]] 22:06:21 -!- leppie [~lolcow@196-210-156-84.dynamic.isadsl.co.za] has quit [Ping timeout: 252 seconds] 22:07:27 peeeep [~potato@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has joined #scheme 22:10:46 leppie [~lolcow@196-210-156-18.dynamic.isadsl.co.za] has joined #scheme 22:10:56 -!- ijp [~user@host109-150-134-56.range109-150.btcentralplus.com] has quit [Quit: The garbage collector got me] 22:22:58 -!- tessier [~treed@kernel-panic/copilotco] has quit [Read error: Operation timed out] 22:24:06 tessier [~treed@kernel-panic/copilotco] has joined #scheme 22:26:35 phax [~phax@cpc14-haye17-2-0-cust110.haye.cable.virginmedia.com] has joined #scheme 22:26:35 -!- phax [~phax@cpc14-haye17-2-0-cust110.haye.cable.virginmedia.com] has quit [Changing host] 22:26:35 phax [~phax@unaffiliated/phax] has joined #scheme 22:27:04 doc_who [~doc_who@pool-96-241-42-178.washdc.fios.verizon.net] has joined #scheme 22:28:07 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 22:30:22 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Read error: Connection reset by peer] 22:32:33 dnolen [~user@pool-96-224-20-172.nycmny.east.verizon.net] has joined #scheme 22:33:32 -!- copumpkin [~copumpkin@unaffiliated/copumpkin] has quit [Quit: Computer has gone to sleep.] 22:41:56 araujo [~araujo@190.73.45.171] has joined #scheme 22:41:57 -!- araujo [~araujo@190.73.45.171] has quit [Changing host] 22:41:57 araujo [~araujo@gentoo/developer/araujo] has joined #scheme 22:48:23 -!- lcc [~user@unaffiliated/lcc] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 22:49:12 -!- annodomini [~lambda@wikipedia/lambda] has quit [Ping timeout: 272 seconds] 22:49:18 jeapostrophe [~jay@racket/jeapostrophe] has joined #scheme 22:52:24 huangjs [~huangjs@190.8.100.83] has joined #scheme 22:55:00 -!- jeapostrophe [~jay@racket/jeapostrophe] has quit [Ping timeout: 244 seconds] 22:55:12 jeapostrophe [~jay@racket/jeapostrophe] has joined #scheme 22:55:55 impomatic [~digital_w@227.127.112.87.dyn.plus.net] has joined #scheme 23:00:35 -!- b1rkh0ff [~b1rkh0ff@178.77.25.45] has quit [Ping timeout: 250 seconds] 23:05:38 -!- dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has quit [Ping timeout: 252 seconds] 23:06:04 -!- SleepingPanda is now known as pyro- 23:07:21 -!- phax [~phax@unaffiliated/phax] has quit [Quit: Leaving] 23:11:22 -!- tuubow [~adityavit@c-69-136-105-164.hsd1.nj.comcast.net] has quit [Ping timeout: 272 seconds] 23:14:30 -!- peterhil` [~peterhil@xdsl-77-86-196-131.nebulazone.fi] has quit [Ping timeout: 265 seconds] 23:17:39 lcc [~user@unaffiliated/lcc] has joined #scheme 23:22:41 Hi :-) I was just wondering what the Scheme equivalent of Kernighan & Ritchie is? 23:23:57 r5rs. 23:24:10 http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-2.html 23:27:45 peterhil` [~peterhil@xdsl-77-86-196-131.nebulazone.fi] has joined #scheme 23:31:41 Thanks. I can't see it on Amazon, but R6RS is there... 23:31:57 -!- r_r_r [~chatzilla@77.126.137.243] has quit [Remote host closed the connection] 23:32:05 I would skip r6rs. Wait for r7rs (or read the draft if you're in a hurry). 23:32:55 I guess you could send a personal check to each of the authors: http://www.schemers.org/Documents/Standards/R5RS/HTML/ 23:35:17 Wow, quite a few names I recognise there! 23:38:14 (one might also want to check http://www.scheme.com/tspl) 23:38:24 jake__ [~jake@74.213.226.253] has joined #scheme 23:43:37 I was just looking at tspl on Amazon. Just about to buy a copy of the second edition. 23:46:50 -!- lcc [~user@unaffiliated/lcc] has quit [Ping timeout: 272 seconds] 23:52:04 isn't r5rs the third? 23:54:21 -!- RITRedbeard [~RITReadbe@c-68-37-165-37.hsd1.nj.comcast.net] has quit [Quit: Leaving] 23:55:59 -!- hash_table [~quassel@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Ping timeout: 245 seconds] 23:55:59 -!- getpwnam [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Ping timeout: 245 seconds] 23:56:58 -!- lem_e_tweakit [~ian@70-138-242-181.lightspeed.hstntx.sbcglobal.net] has quit [Ping timeout: 272 seconds]