00:00:40 Now where do you define INITIALIZE-LOGFILE? 00:00:48 ;( 00:00:52 I'm so dumb thanks 00:01:08 I named the words in the wrong order 00:08:11 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: Leaving] 00:15:28 -!- fradgers- [~fradgers-@5adafe9d.bb.sky.com] has left #scheme 00:32:23 in PLT can I update the definition of a single procedure without reloading the whole file and clearing my REPL? 00:32:42 kind of like C-x C-e in emacs (or whatever he command was) 00:43:01 -!- Spewns1 [~jake@97-92-216-245.dhcp.stls.mo.charter.com] has quit [Quit: Leaving.] 00:45:10 so, I'm sitting at JFK, and this guys tri-fold next to me asks: "can you transform your virtualization into an agile cloud?" 00:45:33 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 00:45:34 isn't there a mixed metaphor there somewhere? 00:45:53 Hello, Guest62936. Your klutometis is showing. 00:46:28 I don't think the author of that question intended for any of those words to have meaning. 00:48:30 chandler: aptly put; see you guys from california. 00:51:05 hey, klutometis 00:51:10 you owe me cofee 00:51:12 coffee, even 00:59:52 -!- RageOfThou [~RageOfTho@users-33-252.vinet.ba] has quit [Ping timeout: 240 seconds] 01:11:52 -!- mmc [~michal@109.112.21.122] has quit [Ping timeout: 240 seconds] 01:14:10 e-future [~e-future@unaffiliated/sergio/x-8197433] has joined #scheme 01:19:44 TR2N [email@89-180-152-111.net.novis.pt] has joined #scheme 01:26:24 Intensity [VmQThPz4yj@unaffiliated/intensity] has joined #scheme 01:26:32 -!- Riastradh [debian-tor@fsf/member/riastradh] has quit [Remote host closed the connection] 01:26:50 Riastradh [debian-tor@fsf/member/riastradh] has joined #scheme 01:38:45 Delita [~pete@cpe-74-64-94-88.hvc.res.rr.com] has joined #scheme 01:43:04 arcfide [~arcfide@adsl-99-137-203-210.dsl.bltnin.sbcglobal.net] has joined #scheme 01:59:35 ficthe [~cutintape@unaffiliated/ficthe] has joined #scheme 02:05:34 jonrafkind [~jon@c-67-172-254-235.hsd1.ut.comcast.net] has joined #scheme 02:07:39 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 02:12:21 there's a familiar name. 02:23:40 Ooh, Racket is rewriting their GUI? 02:26:00 yep 02:26:04 from C++ => scheme 02:26:09 should make it easier to hack 02:28:46 Are they still using wxwidgets? 02:33:54 dunno 02:33:59 -!- zachk1 [~geisthaus@unaffiliated/zachk] has quit [Ping timeout: 265 seconds] 02:34:15 is there a blog post or anything? 02:35:03 dunno 02:36:15 -!- bgs100 [~ian@unaffiliated/bgs100] has quit [Quit: Leaving] 02:38:06 foof: It's been covered on the `dev' list a few times. It's using native GUI widgets (GTK on X11oid). 02:44:22 (Personally, I still think not using Qt was a mistake. Better to let people who are paid to do it figure out the whole cross-platform toolkit thing.) 02:48:50 qt likes to break compatibility every few releases 02:49:03 I didnt get the same impression from gtk 02:50:19 I don't think they've broken compatibility since the release of Qt 4 about five years ago, and even then the Qt 3 to Qt 4 transition was not difficult if you paid attention to deprecation notices... 02:50:50 I know that Opera had a lot of trouble with Qt recently. 02:50:51 KDE took a long time to transition off Qt 3 because they decided to go for a major platform rewrite of their own at the same time. 02:51:12 You mean, trouble with not using it? It's gone as of 10.60. 02:51:45 chandler, before they switched --- actually, right before --- there were immense pains involved with many of the distributions shipping Qt libraries that didn't actually work. 02:52:06 but anyway I do sort of agree that racket should use qt, i made a half-hearted attempt at writing ffi bindings to Qt but I couldnt figure out how to bind to a C++ library properly 02:52:08 And Opera itself discovered a number of bugs in various versions, and this led to a lot of crash logs. 02:52:11 somehow the pyqt people do it.. im not sure how 02:52:32 jonrafkind: Yeah. Looking at PySide (which seems to be the preferred Python binding) is on my TODO list. 02:52:39 timj_ [~timj@e176193139.adsl.alicedsl.de] has joined #scheme 02:52:55 arcfide: Opera might be a special case though, in that they were layering a cross-platform toolkit on a cross-platform tookit. (Yo dawg, etc.) 02:53:25 I still basically prefer the native toolkits to the cross-platforms ones. 02:53:41 .oO("Yo dawg"?) 02:54:30 Yo dawg, I heard you like cross-platform toolkits, so I layered a cross-platform toolkit over a cross-platform toolkit so you can abstract away from platform dependencies while you abstract away from platform dependencies. 02:55:20 chandler: Qt is C++, I think that would be a huge mistake. 02:55:33 C is much friendlier to other languages. 02:55:52 -!- timj__ [~timj@e176193230.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 02:56:22 arcfide: Yes, but racket/gui is essentially a cross-platform toolkit anyway. I think I'd rather spend my time doing interesting stuff than re-doing what Nokia is paying engineers to do, unless there's a serious problem with it. 02:57:01 foof: People seem to have figured out the "binding to C++" thing, at least in the specific case of Qt. 02:57:14 There's even Common Lisp bindings now. http://common-lisp.net/project/commonqt/ 02:58:16 chandler, I agree, and it makes sense for Racket to use something like Qt. 02:58:40 chandler, or anything else that they happen to choose, actually, whether it be FLTK, Tk, or something else, so long as it works reliably and scales. 02:59:22 My only real complain with bindings is that you don't get GUI Builder support, and to me, that's a complete show stopper. 02:59:32 Well, we'll see. So far Herr Flatt has done the Gtk backend and he's using pango and cairo extensively. I don't know if he intends to use the latter two components on Windows and OS X too. 02:59:49 (well, "done" might be overstating it) 03:00:05 What's the state of Gtk on Windows? 03:00:48 It works, but it looks incredibly out of place. 03:01:13 smoke, from kde, looks interesting 03:01:18 (to get qt bindings) 03:05:14 -!- dfkjjkfd [~paulh@7-13-ftth.onsnetstudenten.nl] has quit [Quit: Lost terminal] 03:06:39 rbarraud [~rbarraud@118-93-72-142.dsl.dyn.ihug.co.nz] has joined #scheme 03:06:58 My personal plan is to use xlib+freetype on *nix, and native Carbon on OS X. 03:08:04 xlib doesn't provide a lot of widgets.. you want to write those all yourself? 03:08:16 Yes, I specifically *want* to write them myself. 03:08:22 fowlduck [~fowlduck@24-196-82-168.dhcp.mdsn.wi.charter.com] has joined #scheme 03:08:29 ha wow! 03:08:29 It will make it easier when I write my own OS. 03:08:37 my personal plan is to persuade the Canadians, the British, and the French; after that, the UN Security Council will be easy; and thenceforth ... WORLD DOMINATION!! 03:08:47 .oO("Oh crap, did I say that out loud?") 03:09:12 how many transistors will the foof chip have? 03:09:15 The OS won't be for another 10 years or so, though. 03:09:27 foof: You don't want to support 64-bit GUIs on OS X? 03:09:49 I thought Carbon was going the way of the dodo? 03:10:19 I still think that people discount Motif on UNIX machines too readily. 03:10:29 Oops, I meant Cocoa. 03:10:49 arcfide: I discount Motif heavily, because I've used it! 03:11:05 :-) 03:11:09 Who needs trifles like decent font rendering? 03:12:16 chandler, hey now. :-) That may have been true with older versions of Motif.... 03:12:58 Oh, and who needs alpha blending either? 03:13:06 arcfide: Has there been a major change that I missed? 03:13:49 chandler: Motif has supported transparency and decent fonts for a while now, I think. Actually, I think there might be at least two different schools of thought on how to achieve it in Motif, now. 03:14:05 Anyway, I would never pay for software for *nix. 03:14:51 arcfide: As the kids would say, "pics or it didn't happen". 03:14:55 Eh, I'd rather pay people who write Linux software than pay those who write Windows software. 03:15:48 Well, actually it's not a *nix thing, per se. I just won't pay if there's a decent free alternateive available. 03:16:24 So why pay money for something like Motif, when Lesstif, Gtk and Qt are free? 03:16:51 You don't pay for Motif on *nix platforms unless you're using AIX or something. 03:17:04 hadronzoo [~hadronzoo@adsl-75-20-235-209.dsl.rcsntx.sbcglobal.net] has joined #scheme 03:17:40 Oops, second mis-statement :) 03:18:01 I won't use closed source software if there's a decent open source alternative. 03:18:26 It's silly to seriously debate the advantages of Motif now. Whatever advantages it might have had in 1998 notwithstanding, it's a dead letter. 03:18:59 As are X toolkit intrinsics. 03:19:28 -!- hohoho_ [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 03:19:31 And server-side font rendering. 03:20:19 foof, okay, I can see that. 03:20:27 -!- drwho [~drwho@184.77.143.32] has quit [Ping timeout: 264 seconds] 03:21:21 chandler, anyways, Motif does support antialiased fonts and things like PNG images and other various features now, and many of those features were available before as well, but many people didn't know how to do them. Motif never has been a particularly easy or nice toolkit. 03:21:49 In that respect GTK and Qt are way ahead of Motif. 03:22:16 _danb_ [~user@124.149.177.177] has joined #scheme 03:23:31 I actually have a general complaint against X11 toolkits, including GTK, Qt, Motif, WxWidgets, &c. They all seem so much harder than, say, Cocoa. 03:23:51 Racket actually did a great job in that respect. 03:24:11 Most things are harder than Cocoa. 03:24:28 IMO, PLT did a good job trying to make it as easy and as useful as possible. 03:24:30 I don't find GTK or Qt to be particularly difficult to deal with, since they hide the grotty bits of X11 completely. 03:25:09 /me tries to avoid the distraction of IRC. 03:25:21 Hehe, I really should be working. :-) 03:25:30 Me too. 03:25:34 -!- kushal [~kdas@fedora/kushal] has quit [Ping timeout: 276 seconds] 03:27:01 hohoho [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 03:29:13 -!- hohoho [~hohoho@ntkngw227224.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 03:36:09 Off-topic: Is there any disk encryption these days that resists snapshot attacks? 03:36:19 -!- proq [~user@unaffiliated/proqesi] has quit [Ping timeout: 260 seconds] 03:38:30 Riastradh, do you have a reference to how these snapshot attacks work? 03:38:39 (Just a moment.) 03:40:09 -!- ficthe [~cutintape@unaffiliated/ficthe] has quit [Quit: Leaving] 03:44:02 kushal [~kdas@114.143.162.157] has joined #scheme 03:44:03 -!- kushal [~kdas@114.143.162.157] has quit [Changing host] 03:44:03 kushal [~kdas@fedora/kushal] has joined #scheme 03:44:23 Sorry, in-person conversation interrupted. Most disk encryption that I know of (e.g., TrueCrypt (last I checked), NetBSD's cgd, OpenBSD's svnd) encrypts each disk sector with an initialization vector that is a function only of the key and the disk sector number. If you rewrite that sector, the new data are encrypted with the same initialization vector as was used to encrypt the old data. 03:45:06 At this point, any cryptographers in the channel will have alarm bells going off in their heads saying: Bing! Initialization vector reuse ==> information leakage. 03:45:11 -!- kushal [~kdas@fedora/kushal] has quit [Read error: Connection reset by peer] 03:45:37 -!- acarrico [~acarrico@pppoe-68-142-49-233.gmavt.net] has quit [Quit: Leaving.] 03:47:55 In a snapshot attack, the attacker takes two snapshots at different times of a common disk encrypted with a common key. (Example: You go through customs twice, on two different trips. In the process of violating the Fourth Amendment, they take a snapshot of your disk each time.) Some disk sectors have been rewritten between those two times, giving the attacker information about the plaintexts in those sectors. 03:48:40 (Ahem, excuse me. I believe that the theory is that you do not legally exist while you're standing on American soil in customs, so the Fourth Amendment doesn't apply, or something like that, but anyway, that's beside the point.) 03:50:46 phax [~phax@unaffiliated/phax] has joined #scheme 03:54:38 -!- fowlduck [~fowlduck@24-196-82-168.dhcp.mdsn.wi.charter.com] has quit [Remote host closed the connection] 03:56:16 typemore [~typemore@unaffiliated/typemore] has joined #scheme 03:56:48 anyone know of a really clean scheme implementation? something like lua: readable VM + simple C api 03:57:25 Riastradh: Other than knowing that those sectors have changed, what else does the attacker gain? 03:57:50 If you're assuming that the government has a known-plaintext attack on AES, then encrypting the disk at all is somewhat pointless, is it not? 03:57:59 chandler, the attacker now has a pair of distinct ciphertexts (presumably from distinct plaintexts) encrypted with a single key and a single initialization vector. 03:58:10 typemore: Yes; I'd look at Chibi Scheme. http://code.google.com/p/chibi-scheme/ 03:58:33 Riastradh: Are you aware of a practical attack based on this? 03:59:00 i forgot how aes works 03:59:07 is the xor of the ciphertexts = the xor of the plaintext? 03:59:27 chandler, no, but a basic assumption of almost all security proofs involving initialization vectors is that they not be reused. 04:00:23 Riastradh: I believe that AES-XTS based encryption products don't suffer from IV reuse in this way. 04:01:37 And yes, I don't like IV reuse, but I don't think there's a scheme to avoid it without sacrificing part of your disk (as the P1619 / XTS products do, I think). 04:02:38 (Well, I know of one disk encryption system that doesn't always use the same key and initialization vector to encrypt the same disk sector at different times, but it is ridiculous anyway and not really worth discussing: FreeBSD's GBDE.) 04:03:17 chandler: chibi almost looks perfect; are there opengl bindings for it? 04:03:37 typemore: I don't know. Ask foof. (He's the author.) 04:04:49 foof: ping 04:05:43 typemore, in the block modes of AES, AES_k(P1) xor AES_k(P2) is not AES_k(P1 xor P2). However, in the stream modes such as CTR, that property does hold, which is why initialization vector reuse is not merely a vague concern but an immediate disaster. 04:06:33 Most disk encryption software I know of uses block modes of AES, such as CBC, which is why I answered that I don't know of a practical attack that gives substantial information about the plaintexts. 04:06:37 Riastradh: IIRC AES_k(P1) = P1 xor blah(K); as a result 04:06:47 AES_k(P1) xor AES_k(P2) = p1 xor P2 04:06:49 iirc 04:07:24 typemore, yes, if we're using AES in a stream mode with the same initialization vector. That's because AES in a stream mode just generates a key stream which is xor'd with the plaintext to produce the ciphertext. 04:07:31 -!- soupdragon [~quantum@unaffiliated/fax] has quit [Quit: soupdragon] 04:07:59 Riastradh: I appear to be wrong about XTS; the property I was thinking of was the use of the HMAC for authentication, which necessarily requires extra space. 04:08:30 As far as I know, with XTS, and the other disk sector encryption schemes, they still generate initialization vectors only from the key and the sector number. 04:08:54 this conversatio nsounds interesting; out of courisity, what is motivating the conversatin? 04:08:57 All that XTS &c. do is hack around the case when the size of a disk sector is not an integral multiple of the size of the cipher block, or something. 04:09:35 I think XTS, XEX, and LRW are more resiliant to bit-flipping attacks. 04:09:36 (Sorry, I meant `As far as I know, with XTS, and the other disk encryption cipher modes...'.) 04:10:08 typemore, idle curiosity. I asked, shortly before you entered, whether anyone here knew of any disk encryption systems resistant to snapshot attacks. 04:12:26 Maybe someone here can prevent me from caving into my own self-delusions. 04:12:39 Is there any high performance array processing type library in portable Scheme? 04:12:43 Or at least, reasonably portable. 04:12:52 Perhaps I misremember what XEX, XTS, &c., are all about, though; I just remember not seeing anything about them that resists snapshot attacks. 04:13:01 arcfide, ha! No. 04:13:02 I'm basically thinking along the lines of APL for Scheme. 04:13:05 Next question? 04:13:33 arcfide: if you find one; please drop me a msg 04:13:53 Riastradh: There isn't. Blame my foggy memory. 04:14:01 (Your questions seem much easier than mine! Keep 'em comin'!) 04:14:13 Riastradh, am I to interpret your response to mean that such a library need not exist and its very consideration constitutes insanity, or, rather, that such a lack indicates a severe and strongly felt gap in existing Scheme functionality? 04:14:38 arcfide, `high-performance' and `portable' don't go together in the same sentence with Scheme. 04:15:04 Which is why I amended my query with "reasonably." 04:15:28 In other words, a statically typed Bigloo library written in half assembly probably isn't what I'm after. 04:15:49 "portable Scheme" and "reasonably" don't go together either. :-) 04:16:02 Oh, haha, hey now.... 04:16:25 Let's see what other pairs of words we can juxtapose for hilarity's sake! 04:16:38 I'm basically trying to convince myself not to implement an APL type library for Scheme. 04:16:45 Is that hilarious enough? :-D 04:16:47 Nooo ... don't do it .... 04:16:57 Riastradh: As I'm thinking about it a bit more, it seems to me that the strategy to counter IV reuse is to move the sector around on writes, ala wear leveling on flash media. 04:17:34 arcfide, I think Aubrey Jaffer has experimented with what you are looking for, except that it runs on SCM and SLIB, of course. 04:18:06 I'm not sure if any existing disk encryption system does this, or if there's some other way to accomplish that. 04:18:21 Riastradh, do you know if he reached anything that was reasonably useful? 04:18:34 Isn't SLIB what you get when you try to put "portable Scheme" and "reasonably" together? 04:18:42 LOL 04:18:45 Okay, that's a good one. 04:18:50 `Reasonably useful' and `SCM and SLIB' in the same thoug...never mind, enough of that trope. 04:19:04 Trope? Meme? Whatever that thing is. 04:19:31 hadronzoo_ [~hadronzoo@adsl-75-20-235-209.dsl.rcsntx.sbcglobal.net] has joined #scheme 04:19:48 We're a veritable troupe. If I could convince you two to switch to another implementation, we could be the three Racketeers. 04:19:49 In other news, I read ``Coders at Work'' the other day, and I enjoyed it. 04:19:52 what does chibi-scheme/op-codes.c do? 04:20:18 I think it stores C source code, typemore. 04:21:16 typemore: I believe it defines the opcodes of the bytecode VM. 04:21:45 bah, no jit? :-D 04:22:28 Not yet, anyway. I think he's planning on adding one eventually. 04:23:06 chandler, hmm, wear-levelling sounds like a good idea, but hairy. Here's a similar idea, which sounds slightly less hairy to me but which requires integration between the disk and file system: using a log-structured file system and re-keying on garbage collection. 04:23:17 If you guys want something else to laugh at, we've been doing RSA encryption in Java for one of our C.S. courses here. We're using a naive implementation of things using BigInteger, but certain combinations of method calls make Java come to an absolute standstill. 04:23:25 don't most log-structured FS give level wearing? 04:23:42 -!- hadronzoo [~hadronzoo@adsl-75-20-235-209.dsl.rcsntx.sbcglobal.net] has quit [Ping timeout: 265 seconds] 04:23:42 -!- hadronzoo_ is now known as hadronzoo 04:24:11 And to make things more funny, the implementation can't even handle 16-bit seeds for the keys because it slows down so badly. 04:24:18 typemore, the difference between what chandler suggested and what I suggested is whether the `disk encryption system' looks like a disk device on which any file system can run, or looks like a particular file system. 04:25:13 Riastradh: By re-keying, I assume you mean incrementing a generation counter that is used to derive the sector IV? 04:25:27 chandler, sure, something like that. 04:25:38 It might turn out to be just as hairy as implementing wear-levelling, of course. 04:26:11 Riastradh, how is your hacking on Scheme-CML coming along? 04:26:26 I haven't touched it much lately, arcfide. 04:26:39 Should I be preparing to push out another update with my next iteration of code releases? 04:26:53 Ah, oh well. Oh! 04:26:54 A month or two ago I made some small changes to render it slightly more safe to interrupt. 04:27:07 (Not safe enough to satisfy me, though.) 04:27:08 Riastradh: I think it's probably better, though there are a paucity of log-structured file systems in the wild. 04:27:11 Here's another question. Concurrent processing libraries...anything good out there in Scheme right now? 04:27:41 chandler, really? I thought there were half a dozen of them in development for Linux these days, of which at least one or two has been implemented for NetBSD too. 04:28:01 I think zfs/btrfs copy-on-write filesystems are the New Hotness. 04:28:06 I've got a friend going to a conference where Guy Steele is going to be talking about concurrency again, and I'd like to be able to say, hey, check out an useful library for that in Scheme. 04:28:09 Well, yeah. 04:28:11 Stick a "-style" in there. 04:28:18 arcfide, ha! 04:28:48 Maybe my memory expanded `NILFS' to `NILFS, and FooFS and BarFS and BazFS and QuuxFS and the LFS that nobody cares about any longer'. 04:28:57 I'm still stuck in the first half of the alphabet, and they're playing around with the end of the alpha bet. I'm behind. 04:29:18 Riastradh: Don't forget Fossil. 04:29:29 Fossil? The Plan 9 thing or the sqlite thing? 04:29:39 The Plan 9 thing. 04:29:58 Ah, Plan 9. Me likey my mouse chords. 04:30:00 Is (was?) that log-structured, or merely append-only in UI? 04:31:27 Hm, sorry, I don't think it's actually log-structured. 04:33:14 -!- hadronzoo [~hadronzoo@adsl-75-20-235-209.dsl.rcsntx.sbcglobal.net] has quit [Quit: hadronzoo] 04:34:09 hadronzoo [~hadronzoo@adsl-75-20-235-209.dsl.rcsntx.sbcglobal.net] has joined #scheme 04:34:22 Apropos of fashionable new file systems these days, is ZFS stable yet on anything but the proprietary Solaris? I keep hearing horror stories about it (well, the occasional offhand remark alluding to one, anyway) on FreeBSD, and it doesn't sound ready on NetBSD yet. 04:34:29 Somehow I thought it was, but I appear to have gotten Venti's append-only property mixed up with its copy-on-write snapshots in my head and produced an entirely figmentary log-structured filesystem. 04:35:19 Riastradh: I'm still hearing horror stories about every recent file system out there, from EXT4 to ReiserFS and ZFS. 04:35:27 I tried to install 8.0 on ZFS and gave up, but that's less of a stability thing and more of a hating the FreeBSD installer thing. 04:35:27 -!- rbarraud [~rbarraud@118-93-72-142.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 246 seconds] 04:35:46 chandler, tried the upgraded OpenBSD installer? 04:36:08 Only to a Motif enthusiast and Gopher acolyte could ReiserFS be "recent". :-) 04:36:22 Guilty as charged. :-) 04:36:35 No, I don't generally mess around with OpenBSD. 04:36:42 But I wouldn't say I'm a Motif enthusiast. It just happens to work for me. 04:36:51 I stopped paying attention to ext4 after the balderdash surrounding it last year (or was it two years ago?) with losing data by design. 04:37:02 Yeah, that was messed up. 04:37:17 Well, that's an exaggeration. 04:37:35 I didn't stop paying attention to it because I wasn't paying attention to it in the first place, until I heard about the lunatic balderdash. 04:38:12 Speaking of things not to pay attention to, does anyone know if Hurd actually works yet? 04:38:35 What's your definition of "works"? 04:38:36 Anyway, so there's, uh, at least one log-structured file system for Linux these days, NiLFS, backed by NTT, so it plausibly may be serious. 04:39:02 !seen foof 04:39:12 is there a bot in this channel? 04:39:21 Yep, typemore. Watch: 04:39:22 minion: seen foof 04:39:23 foof was last seen 5y6m14d32h43m10s ago, saying "minion: when are you going to support seen?" 04:39:30 5 years ago? 04:39:33 typemore: There's no bot that responds to that here. He's probably not around. You could ask your questions on the chibi list, or wait for him to be around tomorrow. 04:39:41 chandler, I think that's my favourite feature of minion. 04:39:54 lol 04:39:58 i get the joke now ... 04:40:07 minion: seen Riastradh 04:40:07 riastradh was last seen 5y6m14d32h43m10s ago, saying "minion: when are you going to support seen?" 04:40:13 minion: seen minion 04:40:13 seen minion: what do you think 04:46:11 Riastradh: depending on what part of NTT is backing NiLFS, that could be a lot like saying "backed by Bell Labs", which is to say interesting but not exactly confidence-inspiring. 04:46:27 What exactly does Bell Labs do these days? 04:48:18 send top notch researchers to google 04:48:28 wait, send the researchers that couldn't go to google to elsewhere 04:48:55 what I really want to know: 04:49:01 how has MIT advanced CS in the past decade? 04:51:28 -!- Mohamdu [~Mohamdu@CPE00222d53fe20-CM00222d53fe1d.cpe.net.cable.rogers.com] has quit [Ping timeout: 276 seconds] 04:52:22 typemore: They've produced Google employees, of course. 04:54:23 -!- hadronzoo [~hadronzoo@adsl-75-20-235-209.dsl.rcsntx.sbcglobal.net] has quit [Quit: hadronzoo] 05:03:07 -!- IJP [~Ian@host86-184-177-53.range86-184.btcentralplus.com] has quit [Quit: leaving] 05:05:42 EbiDK [~ebi@188.114.160.210] has joined #scheme 05:08:35 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Remote host closed the connection] 05:09:30 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 05:11:42 they stopped teaching scheme? 05:12:04 rbarraud [~rbarraud@118-93-72-142.dsl.dyn.ihug.co.nz] has joined #scheme 05:12:46 fowlduck [~fowlduck@24-196-82-168.dhcp.mdsn.wi.charter.com] has joined #scheme 05:14:31 hohoho [~hohoho@airh128011023.mobile.ppp.infoweb.ne.jp] has joined #scheme 05:14:35 rbarraud_ [~rbarraud@118-93-93-203.dsl.dyn.ihug.co.nz] has joined #scheme 05:14:53 -!- hohoho [~hohoho@airh128011023.mobile.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 05:15:28 Checkie [4314@unaffiliated/checkie] has joined #scheme 05:17:28 -!- rbarraud [~rbarraud@118-93-72-142.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 276 seconds] 05:21:11 rbarraud__ [~rbarraud@118-92-155-227.dsl.dyn.ihug.co.nz] has joined #scheme 05:21:13 -!- EbiDK [~ebi@188.114.160.210] has quit [Quit: Ex-Chat] 05:23:03 -!- rbarraud_ [~rbarraud@118-93-93-203.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 246 seconds] 05:30:55 -!- phax [~phax@unaffiliated/phax] has quit [Quit: Leaving] 05:35:54 Toekutr [~toekutr@adsl-69-107-127-238.dsl.pltn13.pacbell.net] has joined #scheme 05:37:42 -!- fowlduck [~fowlduck@24-196-82-168.dhcp.mdsn.wi.charter.com] has quit [Remote host closed the connection] 05:39:26 aidalgol [~user@114-134-6-5.rurallink.co.nz] has joined #scheme 05:53:39 -!- rbarraud__ [~rbarraud@118-92-155-227.dsl.dyn.ihug.co.nz] has quit [Remote host closed the connection] 05:57:08 DrDuck [~drduck@96.37.145.231] has joined #scheme 05:59:03 -!- DrDuck [~drduck@96.37.145.231] has quit [Remote host closed the connection] 05:59:57 DrDuck [~drduck@96.37.145.231] has joined #scheme 06:01:01 nicktick [~nicktick@unaffiliated/nicktick] has joined #scheme 06:06:25 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Remote host closed the connection] 06:11:26 Mohamdu [~Mohamdu@CPE00222d53fe20-CM00222d53fe1d.cpe.net.cable.rogers.com] has joined #scheme 06:12:00 preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #scheme 06:20:04 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Remote host closed the connection] 06:20:35 hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has joined #scheme 06:31:02 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 06:41:24 -!- DrDuck [~drduck@96.37.145.231] has quit [Remote host closed the connection] 06:42:28 -!- jonrafkind [~jon@c-67-172-254-235.hsd1.ut.comcast.net] has quit [Read error: Operation timed out] 07:03:15 foof: ping 07:07:08 -!- Toekutr [~toekutr@adsl-69-107-127-238.dsl.pltn13.pacbell.net] has quit [Quit: REALITY IS TEARING ITSELF ASUNDER, BUT I MUST RACE] 07:18:59 -!- aidalgol [~user@114-134-6-5.rurallink.co.nz] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 07:21:47 -!- typemore [~typemore@unaffiliated/typemore] has quit [Quit: leaving] 08:04:01 -!- pikcmb is now known as m`` 08:09:37 dfkjjkfd [~paulh@7-13-ftth.onsnetstudenten.nl] has joined #scheme 08:29:49 -!- Spewns [~jake@97-92-222-240.dhcp.stls.mo.charter.com] has quit [Quit: Leaving.] 09:04:32 -!- antoszka [~antoszka@unaffiliated/antoszka] has quit [Quit: +++ killed by SIGSEGV +++] 09:10:31 kar8nga [~kar8nga@m-131.vc-graz.ac.at] has joined #scheme 09:18:15 mmc [~michal@109.112.14.164] has joined #scheme 09:25:48 masm [~masm@bl15-130-189.dsl.telepac.pt] has joined #scheme 09:28:13 rbarraud [~rbarraud@202-180-88-252.callplus.net.nz] has joined #scheme 09:34:21 -!- Mohamdu [~Mohamdu@CPE00222d53fe20-CM00222d53fe1d.cpe.net.cable.rogers.com] has quit [Ping timeout: 246 seconds] 09:34:55 alvatar [~alvatar@74.126.222.87.dynamic.jazztel.es] has joined #scheme 09:34:58 -!- alvatar [~alvatar@74.126.222.87.dynamic.jazztel.es] has quit [Client Quit] 09:35:17 alvatar [~alvatar@74.126.222.87.dynamic.jazztel.es] has joined #scheme 09:35:42 jewel [~jewel@196-215-88-71.dynamic.isadsl.co.za] has joined #scheme 09:50:48 gravicappa [~gravicapp@ppp85-140-66-76.pppoe.mtu-net.ru] has joined #scheme 09:57:16 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Ping timeout: 265 seconds] 10:09:21 mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #scheme 10:09:40 -!- mmc [~michal@109.112.14.164] has quit [Ping timeout: 245 seconds] 10:10:03 -!- jmcphers [~jmcphers@218.185.108.156] has quit [Remote host closed the connection] 10:10:47 jmcphers [~jmcphers@218.185.108.156] has joined #scheme 10:13:08 -!- jao [~user@203.Red-88-6-160.staticIP.rima-tde.net] has quit [Ping timeout: 265 seconds] 10:31:58 lvillani [~lvillani@fedora/lvillani] has joined #scheme 10:32:49 preflex: seen foof 10:32:49 foof was last seen on #scheme 7 hours, 14 minutes and 48 seconds ago, saying: I won't use closed source software if there's a decent open source alternative. 10:44:14 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 10:46:58 stis [~stis@1-1-1-39a.veo.vs.bostream.se] has joined #scheme 10:47:33 zachk1 [~geisthaus@unaffiliated/zachk] has joined #scheme 10:54:15 preflex: who are you, and how dare you usurp ... all the other bots?! 10:54:38 rudybot: are you better at answering random questions than preflex? 10:54:39 *offby1: Your host cloak is suspicious. Are you a bot? 10:54:57 no sir, I am not. 10:55:09 hohoho [~hohoho@ntkngw344124.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 10:55:59 preflex: seen preflex 10:55:59 what 10:57:40 minion: add "preflex" as: preflex is mauke's creature 10:57:40 OK, done. 11:01:45 we ought to have a bot olympics. 11:26:49 viller [~chatzilla@20.217.190.90.dyn.estpak.ee] has joined #scheme 11:29:22 mmc [~michal@109.112.4.71] has joined #scheme 11:46:28 -!- masm [~masm@bl15-130-189.dsl.telepac.pt] has quit [Quit: Leaving.] 11:49:34 soupdragon [~quantum@unaffiliated/fax] has joined #scheme 12:01:35 -!- arcfide [~arcfide@adsl-99-137-203-210.dsl.bltnin.sbcglobal.net] has left #scheme 12:05:55 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 12:16:28 -!- rbarraud [~rbarraud@202-180-88-252.callplus.net.nz] has quit [Ping timeout: 260 seconds] 12:17:01 -!- viller [~chatzilla@20.217.190.90.dyn.estpak.ee] has quit [Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716]] 12:26:33 DrDuck [~duck@96.37.145.231] has joined #scheme 12:44:05 fradgers- [~fradgers-@5adafe9d.bb.sky.com] has joined #scheme 13:07:02 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 13:17:36 -!- kar8nga [~kar8nga@m-131.vc-graz.ac.at] has quit [Remote host closed the connection] 13:30:23 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 13:30:40 -!- paperkettles [~chris@ip72-195-132-159.ri.ri.cox.net] has quit [Ping timeout: 258 seconds] 13:32:23 paperkettles [~chris@ip72-195-132-159.ri.ri.cox.net] has joined #scheme 13:45:51 -!- e-future [~e-future@unaffiliated/sergio/x-8197433] has quit [Ping timeout: 248 seconds] 13:48:16 e-future [~e-future@unaffiliated/sergio/x-8197433] has joined #scheme 13:51:36 -!- nicktick [~nicktick@unaffiliated/nicktick] has quit [Ping timeout: 246 seconds] 13:55:28 Quadrescence [~Quad@unaffiliated/quadrescence] has joined #scheme 13:55:48 luz [~davids@201.17.88.176] has joined #scheme 14:04:18 james1071 [~james@92.8.200.176] has joined #scheme 14:06:44 bgs100 [~ian@unaffiliated/bgs100] has joined #scheme 14:08:23 I tried Chicken Scheme 'n I liked it 14:09:21 Of course! What's not to like? ;) 14:10:30 That dumb chibi-scheme i mean whoever is making that must be super dumb 14:11:19 Hey, don't diss our foof! 14:11:24 ;D 14:11:47 I kid, chibi is my preferred Small Scheme 14:12:18 :) 14:12:35 Although foof is being lame and not letting me make it cleaner, and C89 compliant 14:14:18 Maybe he thinks your changes don't make it cleaner? 14:14:26 Sometimes that's a matter of taste 14:14:35 No, I'm sure he just has the ideology "don't fix it if it ain't broke" 14:15:06 You sure? For irregex he's planning some refactoring 14:15:28 No, I'm not sure, but that's what I vaguely recall when I offered it to him 14:16:04 Is it a big patch? 14:16:14 Well I never actually did anything. 14:16:22 But it would be a big patch yes 14:16:50 Do any of the Chicken devs hang out here? (I have no idea who they are) 14:17:47 Quadrescence: they do 14:17:55 I don't remember now the names 14:18:05 I *think* mario-goulart 14:18:16 *sjamaan* is one of them 14:18:25 You could also join #chicken 14:18:30 i c 14:18:45 you can always say something either very good or very bad about chicken, so they'll come out of wherever are hiding :P 14:19:25 ah, sjamaan you are also a chicken dev 14:19:30 ddint' know 14:19:42 *sjamaan* waves 14:19:55 I think chicken actually has a very active community, at least in this channel 14:20:02 wait, did anyone just say something about poultry? 14:20:13 We're more active in #chicken but yes, the community is pretty active 14:20:45 we're even going to have a booth at a conference in two weeks! 14:21:03 I'm sticking with Gambit ATM, but chicken is a very attractive implemetation (not that I feel atraction towards chicken) 14:21:12 I'm a chicken dev, but not core dev. 14:21:43 I'll take a look at the core someday, to see its guts 14:21:53 Same here, though I'm trying to become more involved with chicken core 14:29:25 IJP [~Ian@host86-184-177-53.range86-184.btcentralplus.com] has joined #scheme 14:31:27 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 14:36:21 -!- james1071 [~james@92.8.200.176] has quit [Quit: Leaving] 14:40:10 Does the book SICP teach you the Scheme language or is it more of an exercise/puzzle book? 14:42:45 it's about computation and programming 14:42:52 it just uses scheme because scheme is very simple 14:45:27 I'm having trouble with some things in C and have gotten a little bored. Do you think it'd be a good idea to check out scheme for a while, soupdragon? I'll be taking a course on C in the coming fall term anyway. 14:45:42 yes reading SICP is the best thing you could do 14:45:50 it wont be easy though 14:46:11 Should I read the 4th edition of 'The Scheme Programming Language' to compliment it? 14:46:56 I've got the SICP hardback with me now, but have been contemplating when to start learning because I didn't want to get the scheme and C syntax confused while learning both. 14:47:15 I guess I've just been scared. I'll take a look now, though. 14:47:24 you can watche the SICP video on line 14:47:25 :D 14:47:50 DrDuck: If you want a simple book to start with you could also check out the Little Schemer. That one will help you get used to functional programming and the syntax 14:48:02 (Read it before SICP) 14:48:12 Are the videos helpful? 14:48:17 Yes, very 14:48:30 They're old and of crappy quality though ;) 14:48:38 So, little schemer before the videos and SICP? heh :) 14:50:28 what is wrong with SICP 14:50:30 why not read it first 14:50:34 Nothing 14:50:48 It's a very different book than the little schemer 14:50:55 Harder too 14:51:30 I've been on and off with C for the past few months, so hopefully I can handle it. :D 14:55:51 _Pb [~pb@75.131.194.186] has joined #scheme 14:56:03 samth [~samth@c-24-61-8-31.hsd1.ma.comcast.net] has joined #scheme 14:57:11 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 14:58:32 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 15:07:29 -!- lvillani [~lvillani@fedora/lvillani] has quit [Read error: Connection reset by peer] 15:09:36 The SICP videos are not old and crappy. This is an old video: http://www.youtube.com/watch?v=F1i40rnpOsA This is a crappy video: http://www.youtube.com/watch?v=RMINSD7MmT4 ; SICP videos are good and nice! 15:10:29 <_Pb> forgot about those, may watch them today 15:13:18 <_Pb> hmm, I always wondered why scheme programs were so many lines of code when compared to equivalent CL programs, but I just realized that in scheme you usally have very little on each line of code 15:13:22 <_Pb> *usually 15:18:55 -!- alvatar [~alvatar@74.126.222.87.dynamic.jazztel.es] has quit [Quit: leaving] 15:19:30 kar8nga [~kar8nga@78.104.80.254] has joined #scheme 15:21:44 I hope learning Scheme will help me to think differently and more abstractly with C rather than confusing me. xD 15:22:29 definitely 15:22:58 you will learn a lot more than scheme by reading SICP though 15:23:09 :D 15:23:20 I'm going to start reading after I finish this first lecture. 15:26:19 hmm 15:26:34 Is there any content that I could get out of the video lectures that I wont get from the books? 15:26:52 Apart from just having a person explaining htings rather than a lump of bleached wood? 15:27:13 Sussman is so hott 15:27:35 I'll have to go back to learning C in a week when lectures at the university start, though. :< Do you think learning/balancing both is possible, soupdragon? 15:27:59 I don't think it's a balancing act at all 15:28:11 What do you think it is, soupdragon? 15:28:29 idk but you should worry less 15:32:53 antoszka [~antoszka@unaffiliated/antoszka] has joined #scheme 15:37:48 masm [~masm@bl15-130-189.dsl.telepac.pt] has joined #scheme 15:45:58 copumpkin_ [~pumpkin@94.164.67.177] has joined #scheme 15:46:40 -!- copumpkin [~pumpkin@94.167.115.13] has quit [Ping timeout: 276 seconds] 15:46:40 -!- copumpkin_ is now known as copumpkin 15:50:53 -!- _Pb [~pb@75.131.194.186] has quit [Quit: Leaving] 15:51:16 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit: Leaving] 15:52:12 Are procedures and functions the same thing in scheme? 15:52:45 Functions are a mathematical ideal. Procedures are computer code that implement such things 15:53:09 Sometimes people use "function" to refer to procedures that have no (observable?) side-effects 15:53:24 I see 15:54:08 oh :s 15:54:19 *tommylommykins* used them to mean the same thing :( 15:54:21 choas [~lars@p5792CB3A.dip.t-dialin.net] has joined #scheme 15:55:12 -!- zachk1 [~geisthaus@unaffiliated/zachk] has quit [Read error: Connection reset by peer] 15:56:01 The objects in Scheme are called procedures; hence, for example, the predicate PROCEDURE?. 15:56:28 tommylommykins: Some languages don't make that any simpler either, requiring the use of a "function" keyword 15:57:14 oh, I meant with regard to Scheme... 16:00:47 tommylommykins: Usually you can say either `function' or `procedure' and people will understand what you're talking about, but if you want to be a stickler `procedure' is correct. 16:01:00 -!- Nshag [user@lns-bzn-44-82-249-217-166.adsl.proxad.net] has quit [Ping timeout: 272 seconds] 16:03:28 :) 16:07:56 -!- kar8nga [~kar8nga@78.104.80.254] has quit [Remote host closed the connection] 16:09:09 sladegen [~nemo@unaffiliated/sladegen] has joined #scheme 16:12:16 -!- sladegen_ [~nemo@unaffiliated/sladegen] has quit [Ping timeout: 240 seconds] 16:12:32 Nshag [user@lns-bzn-43-82-249-179-161.adsl.proxad.net] has joined #scheme 16:16:55 homie [~user@xdsl-87-79-169-195.netcologne.de] has joined #scheme 16:17:02 wbooze [~user@xdsl-87-79-169-195.netcologne.de] has joined #scheme 16:17:10 I prefer 'subroutine' 16:17:19 fod [~fod@92.251.255.6.threembb.ie] has joined #scheme 16:18:05 GOSUB zbigniew 16:18:09 maybe just 'goto' 16:19:30 lambda the ultimate 16:23:47 mejja [~user@c-14bee555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #scheme 16:23:49 -!- masm [~masm@bl15-130-189.dsl.telepac.pt] has quit [Quit: Leaving.] 16:24:20 -!- samth [~samth@c-24-61-8-31.hsd1.ma.comcast.net] has quit [Ping timeout: 265 seconds] 16:25:06 karme [~user@stgt-5f7092d1.pool.mediaWays.net] has joined #scheme 16:31:13 -!- zbigniew is now known as eliza` 16:31:29 -!- eliza` is now known as zbigniew 16:48:43 Mohamdu [~Mohamdu@CPE00222d53fe20-CM00222d53fe1d.cpe.net.cable.rogers.com] has joined #scheme 17:01:55 -!- hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has quit [Quit: hadronzoo] 17:02:06 m``: real mature 17:03:35 copumpkin: sorry? 17:03:35 m``: did you launch that attack? you joined just before it and left after we finished banning all the bots 17:03:47 #haskell 17:03:47 No, of course 17:03:55 and then you spammed a little yourself ;) 17:03:56 Why would you even think that? 17:04:04 meh 17:04:25 I was told by some users at #wrongplanet to join StrictAnal channel 17:04:59 wow 17:05:26 hjack [~hjack@2001:470:e1d0:29a:dead:beef:face:666] has joined #scheme 17:07:50 Yeah, I know 17:08:37 phax [~phax@unaffiliated/phax] has joined #scheme 17:12:48 copumpkin, kinda funny seeing you talk to nobody 17:17:29 -!- homie [~user@xdsl-87-79-169-195.netcologne.de] has left #scheme 17:19:27 -!- IJP [~Ian@host86-184-177-53.range86-184.btcentralplus.com] has quit [Quit: Lost terminal] 17:20:36 soupdragon: :) 17:27:18 ignoring ALL from soupdragon 17:27:27 ^ very rude racist 17:28:19 homie [~user@xdsl-87-79-169-195.netcologne.de] has joined #scheme 17:28:32 m``: soupdragon is actually one of the smartest people in here, and just doesn't tolerate people who act like you are right now. 17:29:06 Quadrescence, this guy isn't worth it Q - don't stoop to his low lever 17:29:23 Quadrescence: smartdragon should probably stop harassing me 17:30:18 "Trying to learn C and LISP at the same time is a really bad idea. Learning one requires unlearning the other." - How do you guys feel about this statement? 17:30:36 DrDuck: Sounds like it's meaningless for the most part. 17:30:55 I code in both on an almost daily basis. 17:31:52 samth [~samth@209.117.47.253] has joined #scheme 17:32:28 I'm afraid to attempt to learn both now. :< 17:33:13 yeah DrDuck probably best to just give up and do nothing 17:33:34 Agreed. :{D 17:35:37 soupdragon: why you being racist/ 17:35:39 ? 17:35:55 i hate niggers and spics. I don't care what people think 17:35:59 that is just wrong dude 17:35:59 D: 17:36:06 woah 17:36:47 you guys got a real problem here, namely, keeping a muzzle on soupdragon 17:37:11 niko [~niko@freenode/staff/niko] has joined #scheme 17:37:14 :10 17:37:19 Cut it out, folks. 17:38:53 do m`` or hjack actually contribute around here? cause m`` just trolled #haskell and hjack appeared just now and is chiming in with m``'s unpleasantness towards soupdragon 17:39:19 compumpkin: chiming in? 17:39:26 I don't know, copumpkin, but I don't think I've seen any contribution from them. 17:39:27 compumpkin: you see trolls everywhere, i bet 17:39:41 everybody in your miserable little life that doesn't agree with you, is a "troll" right? 17:39:42 m``, please increase your signal to noise ratio. This channel is about #scheme, not about soupdragon. 17:39:48 ...about Scheme, rather. 17:40:00 soupdragon has been spouting off racist remarks in other channels 17:40:19 > cause m`` just trolled #haskell 17:40:19 hjack, as for you, you have thirty seconds to justify your presence here after that remark to copumpkin. 17:40:19 hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has joined #scheme 17:40:21 blatant lies 17:40:23 and he's in here trolling m, and trying to get him klined for it 17:40:34 typical freenode blowhards 17:40:48 you get pissed, so you bring staff in, because you babies can't handle your own problems 17:40:53 I was discussing this module: http://www.haskell.org/ghc/docs/6.10.1/html/libraries/ghc/StrictAnal.html 17:40:55 copumpkin actually does contribute to the discussion about Scheme. 17:40:55 niko: am i right? 17:41:01 -!- ChanServ has set mode +o Riastradh 17:41:03 hjack: do you have anything to say about scheme? 17:41:07 hjack, time's up. 17:41:11 what is scheme? 17:41:18 think i saw a porno once with the name Scheme in it 17:41:21 hjack: Read SICP 17:41:26 bye, hjack 17:41:27 *copumpkin* sighs 17:41:30 naw 17:41:32 -!- hjack [debian-tor@fsf/member/riastradh] has been kicked from #scheme by Riastradh (Scheme, please, not badmouthing.) 17:41:36 hjack [~hjack@2001:470:e1d0:29a:dead:beef:face:666] has joined #scheme 17:41:38 -!- Riastradh has set mode -o Riastradh 17:41:41 but i'm not badmouthing 17:41:42 Sigh. 17:41:54 you guys only have 148 people, your project can't be that important 17:42:12 hjack: are you done? 17:42:20 no, i want to rant some more 17:42:22 hjack, if you want to know what Scheme is, follow the URIs in the topic. Now please go away like I asked until you are ready to discuss Scheme. 17:42:25 -!- ChanServ has set mode +o Riastradh 17:42:28 so, is everyone in here racist? 17:42:34 since you'll stand up for one 17:42:39 sad 17:42:41 hjack: clearly that's the only reasonable conclusion 17:42:45 black people aer people too 17:42:49 so are hispanics 17:42:53 o.O 17:42:53 -!- Riastradh has set mode +b *!*hjack@2001:470:e1d0:29a:* 17:42:56 -!- hjack [debian-tor@fsf/member/riastradh] has been kicked from #scheme by Riastradh (hjack) 17:43:04 Riastradh: you realize hjack = m``` ? 17:43:08 m`` 17:43:09 *karme* updated ignore list: (dolist (user (list "hjack")) (erc-cmd-IGNORE user)) 17:43:17 soupdragon: please stop lying 17:43:24 -!- hohoho [~hohoho@ntkngw344124.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote host closed the connection] 17:43:42 i love the internet 17:43:44 soupdragon, please keep the discussion to Scheme. 17:43:46 m``: no you weren't discussing that module. Strangely enough, I'm the one who brought the world's attention to that module, so am probably why you know about it :) 17:43:48 m``, please keep the discussion to Scheme. 17:43:55 karme: I don't understand why people always feel the need to announce what changes they have made to their ignore list 17:44:08 well I have a scheme question 17:44:09 Riastradh: sorry 17:44:12 (+ 1 1) ==> 2, also 17:44:12 specific to Racket 17:44:14 *copumpkin* shuts up :) 17:44:18 Riastradh: can i discuss type systems as well? 17:44:32 Yes, that's OK, too, m``. 17:44:36 Ok 17:44:41 haskell sucks 17:44:42 Quadrescence: the idea is if you use erc, too - you maybe could use it ... 17:44:45 ... 17:44:48 Riastradh, actually, on the topic of scheme, I've been meaning to ask yout about MIT Scheme lately. More specifically, I'm curious about Edwin's suitability as a general purpose editor under Linux and Windows. Have you tried the latter? 17:44:55 karme: Oh, okay, then I'm fine with that 17:45:05 gnomon, I have never used it under Windows. 17:45:11 Hmm. 17:45:22 I use both Edwin and GNU Emacs regularly under NetBSD, though. 17:45:32 Riastradh, normally I wouldn't ask, but I just picked up a new portable machine and I have yet to replace the OS on it with something less objectionable. 17:45:37 m``, please keep the discussion technical. 17:46:12 gnomon: I used emacs with cygwin and it worked perfectly fine 17:47:09 Quadrescence, I expect emacs to work perfectly well under Windows, yes, but I'm curious about Edwin. 17:47:23 gnomon: emacs is close enough ;) 17:47:25 gnomon, well, my first step would be to put a less objectionable operating system on the machine, but you could try Edwin too if you like. 17:48:07 Riastradh: are we allowed to talk about metacircular evaluators in here 17:48:14 -!- hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has quit [Quit: hadronzoo] 17:48:15 Riastradh, you make a good point. 17:48:44 Yes, Quadrescence. 17:49:02 Quadrescence: I think we're allowed to talk about anything that can reasonably be considered constructive discussion about scheme or the subfields of computer science that intersect with common schemer interests 17:49:05 but that's just a guess :) 17:49:05 The only ones who have to worry about their signal to noise ratio right now are m`` and fax^Wsoupdragon. 17:49:06 Are we allowed to talk about reified continuations? 17:49:15 Riastsradh screw you 17:49:20 Riastsradh what the fuck did I do 17:49:21 soupdragon caught my drift. 17:49:26 *copumpkin* sighs 17:49:32 I was just spitting out a buzzword from SICP 17:49:43 -!- samth [~samth@209.117.47.253] has quit [Ping timeout: 276 seconds] 17:49:52 *gnomon* summons wingo 17:50:05 C'mon c'mon c'mon, wo-o-o-o-ork... 17:51:03 soupdragon: Could you re-do that one thing with shift/reset? The goal was to make a func s.t. (fn (+ 1 $)) ==> (lambda (x) (+ 1 x)) 17:51:11 well, that is an example 17:51:57 hohoho [~hohoho@ntkngw344124.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 17:52:34 It might have been (fn + 1 $) => etc, and (fn + (* 2 $) $) ==> (lambda (x) (+ (* 2 x) x)) 17:52:46 though ideally it should be hygienic 17:55:18 Actually anyone can try the "exercise" using whatever means. 17:55:27 ((fn + 1 $) 2) ==> 3 17:55:27 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 17:55:54 hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has joined #scheme 17:56:16 If you're daring, you can try several arguments: $n being the nth arg 17:56:30 $ and $$ set to $1 and $2 respectively 17:56:38 Riastradh: m`` is a troll and botnetting crapflooder, I put him 17:56:43 Riastradh: on /ignore yersterday 17:56:49 Riastradh: What I said to DrDuck was a joke 17:56:58 Riastradh: based on something I'd said to him earlier 17:57:09 Riastradh: I resent that you singled me out over al the other people who were being offtopic too 17:57:24 lvillani [~lvillani@fedora/lvillani] has joined #scheme 17:58:13 Idk what's going on in here, but soupdragon has been helpful. :{D 17:58:27 ... 17:58:34 :| 17:58:40 *DrDuck* goes afk 17:58:41 foof, hello and read what I said above and solve it 17:58:41 why is everyone pinging me? 17:59:04 OK, I apologize for singling you out, soupdragon, but the best way to proceed will be to keep the discussion technical. 17:59:21 nice... apology and threat in the same sentence 17:59:27 -!- hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has quit [Client Quit] 17:59:43 I'm not threatening you, soupdragon. I'm asking you to keep the discussion technical, that's all. 18:02:17 carter [~carter@cpe-69-201-181-224.nyc.res.rr.com] has joined #scheme 18:04:24 kar8nga [~kar8nga@78.104.80.211] has joined #scheme 18:17:58 soupdragon is fax? Gosh, I never bothered to check /whois until now. 18:18:10 chandler save it 18:18:27 I don't need more abuse from you 18:19:01 I'm not abusing you, am I? 18:19:27 I'm not going to let you drag me down into one of these ridiculous ego-arguments 18:20:11 I'm not arguing. See, this is me not arguing. 18:24:45 hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has joined #scheme 18:28:00 -!- pjb [~t@81.202.16.46.dyn.user.ono.com] has quit [Ping timeout: 245 seconds] 18:28:26 gnomon: Out of curiosity, why would you use Edwin as a general-purpose editor on Windows instead of GNU Emacs? 18:28:57 Only to avoid emacs lisp in favour of Scheme. 18:30:25 Ah. While I'm not the world's biggest fan of elisp, I spend little enough time actually using it that it doesn't bother me terribly much. 18:30:46 gnomon can also bother me about fixing stuff in Edwin, but he can't bother me (reasonably) about fixing stuff in GNU Emacs unless it's paredit. 18:31:02 Well, there is that, yes. 18:31:51 chandler, it's really a question of sequencing more than anything else. I'll eventually be picking up both; I'm just looking for a reason to use one or the other at the outset. 18:32:19 pjb [~t@81.202.16.46.dyn.user.ono.com] has joined #scheme 18:33:23 I have to confess that it's mostly pretty fonts and font lock that keep me in Emacs, though I certainly have accumulated enough cruft and GNU Emacs-specific muscle memory to make transitioning to anything else for regular use non-trivial. 18:35:25 Hmm... Conversely, it is bizarre fontness that usually irks me about GNU Emacs. 18:35:33 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 18:36:19 really? my emacs gorgeous 18:36:32 Riastradh: are you a paredit maintainer btw? 18:37:21 I don't care about pretty fonts in Emacs, usually; it's just that GNU Emacs changes lots of stuff over time, particularly concerning fonts with whatever is the latest fashionable font rendering cruft in X, which is frustrating. Other stuff that frustrates me is, for example, the binding of C-l. 18:37:27 somnium, `the' paredit maintainer, yes. 18:37:48 is there paredit for Racked? 18:37:49 Racket 18:37:54 Not that I know of. 18:37:59 :( I love paredit 18:38:05 So use Emacs! 18:38:11 Riastradh: you are made of awesome 18:38:19 *Riastradh* bows. 18:38:23 well I just figured out how to put LaTeXd images into the Racket REPL and I don't know how to do that with emacs 18:39:14 paredit > not-paredit for scheme? 18:49:59 tommylommykins: paredit rocks for Scheme/Lisp code, if that's what you asked ;-) 18:50:44 zachk1 [~geisthaus@unaffiliated/zachk] has joined #scheme 18:53:59 some people even use paredit for ruby and javascript 18:54:45 Notice that Ruby and Javascript are statement-less language, and you can wrap any expression in parentheses. 18:55:49 ? javascript has statements (`if' for example) 18:56:04 Are you sure you cannot wrap them in parentheses? 18:56:34 no if only picks between code blocks, afunction(if ...) is invalid 18:58:30 I think the same is true for Ruby "def", "module" and "class" declarations 18:58:57 though I think I saw some github project recently where the author used strange indentation and superfluous parens to make it 'cosmetically lispy' 18:59:34 Doug Crockford also has a page with code from The Little Lisper translated to Javascript 19:00:49 sjamaan: for Ruby, definitely not. I used to write fully parenthesed ruby code. People complained that I was writting lisp, but it was syntactically and semantically correct Ruby. I didn't even introduce a cons class! 19:01:24 -!- hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has quit [Quit: hadronzoo] 19:02:20 pjb: You're right 19:02:40 -!- saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has quit [Ping timeout: 240 seconds] 19:05:28 saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has joined #scheme 19:09:31 has anyone used scheme2js/hop? 19:14:27 Another irritation with GNU Emacs: that `line-move-visual' has been made the default. 19:14:54 it seems to be one of these projects that a lot of effort went into, and produced some papers, but I can find almost no evidence that anyone has ever used it in practice 19:19:52 I cant resist 19:19:57 http://img841.imageshack.us/img841/4963/3emacs.png 19:20:30 when people tell me of eclipse or textmate productivity, I just think, it doesnt even have paredit ... 19:22:07 Riastradh: theres a clojure developer who's been reverse engineering paredit on eclipse, Im not sure anyone in #clojure knows you're the maintainer. Ill tell him you are 'next door' 19:22:59 `Reverse-engineering paredit'? 19:23:03 Eclipse? 19:23:04 Seriously? 19:23:53 *sjamaan* winces 19:24:35 zbrown [455456b79f@unaffiliated/zbrown] has joined #scheme 19:25:05 Riastradh: it sounds horrible doesn't it? 19:25:59 -!- tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has quit [Ping timeout: 260 seconds] 19:26:14 Riastradh: but his intentions are pure, I assure you :) 19:26:39 Its actually not that bad, well, aside from being eclipse and all 19:36:31 tommylommykins [~tommylomm@5ad471cc.bb.sky.com] has joined #scheme 19:38:38 somewhat more-signal-less-noise: if TCO is only applied to properly tail-recursive/mutually-tail-recursive functions, are there still cases that are non statically decidable? 19:38:54 -!- dfkjjkfd [~paulh@7-13-ftth.onsnetstudenten.nl] has quit [Quit: Lost terminal] 19:42:30 I don't understand the question at all, because it confuses several different terms. 19:43:37 `Properly tail-recursive' is a property of a Scheme implementation. See Clinger's paper `Proper Tail Recursion and Space Efficiency' for its definition. 19:45:02 -!- homie [~user@xdsl-87-79-169-195.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 19:45:02 `Tail call optimization' is a compiler optimization that may reduce the time or space used by a procedure. It does not, in general, affect the asymptotic space usage of programs compiled by the compiler. 19:45:08 -!- wbooze [~user@xdsl-87-79-169-195.netcologne.de] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 19:48:28 wbooze [~user@xdsl-87-79-169-195.netcologne.de] has joined #scheme 19:48:37 homie [~user@xdsl-87-79-169-195.netcologne.de] has joined #scheme 19:48:38 certainty [~closure@dslc-082-082-134-143.pools.arcor-ip.net] has joined #scheme 19:50:42 I meant properly-tail-recursive to mean procedures like (define (f k0 ...) ... (f k0 ...)) where the same continuation is passed to the entry point from tail position 19:51:14 or when the same continuation is shared by f0 ... fn in a similar fashion 19:51:55 and converting to interation to avoid stack overflows and function call overhead 19:52:06 Hmmm aside from Emacs & VIM, does anyone know of a editor with strong support for scheme/lisp that is supported on Windows? It doesn't have to be free eiother :) 19:52:38 An editor with strong support for Lisp that is not Emacs? 19:52:47 Riastradh: yes 19:52:55 zbrown: lispworks? 19:52:58 *somnium* hides 19:53:11 somnium: :) I've actually been playing with it, just curious if anyone had other suggestions 19:53:49 What's wrong with emacs/vim? 19:54:59 tommylommykins: nothing in particular, I'm actually a pretty heavy emacs user but I've never enjoyed getting emacs + slime + windows working nicely 19:55:44 oh, ok... Slime works with scheme? 19:56:09 tommylommykins: err not sure, sorry was asking the question in #lisp too and lost track of where I was 19:56:19 I think I had it working though...? I can't recall 19:56:54 climacs 19:56:58 xemacs 19:57:01 sxemacs 19:57:03 mg 19:58:13 carter_ [~carter@cpe-69-201-181-224.nyc.res.rr.com] has joined #scheme 19:59:12 o.O 19:59:53 -!- antoszka [~antoszka@unaffiliated/antoszka] has quit [Quit: +++ killed by SIGSEGV +++] 20:00:03 -!- carter [~carter@cpe-69-201-181-224.nyc.res.rr.com] has quit [Ping timeout: 264 seconds] 20:01:39 MichaelRaskin [~MichaelRa@195.91.224.225] has joined #scheme 20:03:47 hadronzoo [~hadronzoo@64.134.6.150] has joined #scheme 20:03:52 Riastradh pasted "questions on implementing ephemerons" at http://paste.lisp.org/display/113298 20:07:25 Riastradh: How does an ephemeron differ from a key-weak hash with one entry? 20:07:38 Does it differ at all? 20:07:54 Yes. It's simpler! 20:08:17 OK, so other than the simplicity, is the behavior identical? 20:08:41 Also, sometimes `key-weak hash tables' do not behave like ephemerons. For example, they don't in MIT Scheme. 20:09:13 The term `ephemeron', however, always refers to the same behaviour, as far as I know. 20:09:40 How do MIT Scheme's key-weak hashes behave? 20:09:54 But yes -- if by `key-weak hash table' you mean the key-weak hash tables that behave like lists of ephemerons rather than merely like lists of pairs whose cars are weak and whose cdrs are strong, then an ephemeron is just a one-entry key-weak hash table. 20:10:24 MIT Scheme's key-weak hash tables behave like alists whose cars are weak and whose cdrs are strong. 20:10:32 (This is because MIT Scheme doesn't have ephemerons.) 20:10:44 Oh, I see - the datum might be a strong reference the key. 20:10:54 Exactly. See the example program. 20:11:01 whats an ephemeron? 20:11:16 zachk1: See http://paste.lisp.org/display/113298 . 20:11:19 zachk1, 20:11:45 I can't say as I've ever bothered to test implementations to see how their key-weak hashes behave. 20:12:02 That's OK -- Bruno Haible has done the work for you; Google `Bruno Haible weak references'. 20:12:25 Oh, right. I *have* read this. 20:12:28 -!- saccade [~saccade@BRAIN-AND-COG-FIVE-THIRTY-SEVEN.MIT.EDU] has quit [Ping timeout: 240 seconds] 20:12:41 I took his algorithm, simplified it, filled in some missing details, and translated it from English into Scheme. 20:13:39 I also added a constraint which he didn't include, though, which is why there are logarithmic factors involved. 20:13:58 -!- m`` [~Your@granny.slept.with.lenin.ru] has left #scheme 20:14:06 whats weak and strong in reference to? 20:14:45 zachk1, most references to objects are strong. When the garbage collector looks at a live object, and sees a strong reference from it to another object, it considers the other object to be live too. 20:15:00 Actually, Haible's explanation and survey was the reason why I came to the conclusion that key-weak hashes should properly be replaced with unenumerable collections, which are naturally key-weak and behave as lists of ephemerons. I'd forgotten that until just now, though. 20:15:52 However, sometimes you can ask for weak references. When the garbage collector sees a weak reference from one object to another, it doesn't assume that the second object is live. If, after garbage collection, the garbage collector found no strong references to the second object, then it will reclaim the second object's storage and inform the first object that the second object no longer exists. 20:16:15 what would this be useful for 20:16:34 memoization with some sort of sane forgetfullness? 20:16:54 Sure. If you don't care about some arguments, then you can delete the entries for them from the memoization cache. 20:17:37 saccade [~saccade@dhcp-18-111-82-90.dyn.mit.edu] has joined #scheme 20:17:44 -!- lvillani [~lvillani@fedora/lvillani] has quit [Remote host closed the connection] 20:17:59 If you want to hang some property on an object, but want the property to be forgotten as soon as nobody else cares about the object, then you would use key-weak hash tables. 20:18:15 The table would be keyed by the objects on which you want to hang properties, and its data would be the values of the properties. 20:19:02 My lisppaste shows an example implementation in Scheme of how to garbage-collect ephemerons. I'd like it to be reviewed, and the questions in it answered, or at least thought about. 20:25:53 Any other reactions or comments or questions are welcome, of course. 20:27:04 Oops, there's a typo -- in WALK-EPHEMERON-QUEUE, EPHEMERON.NEXT should be EPHEMERON.NEXT-QUEUED. 20:27:43 Also, MARK-EPHEMERON-HOOK should probably check for the case of an ephemeron whose key is already marked. 20:27:49 Riastradh: Suppose I have two ephemerons constructed as (let ((x (cons 1 2)) (y (cons 3 4))) (values (make-ephemeron x y) (make-ephemeron y x))) . Will the pairs ever be collected as long as references to the ephemerons are held? 20:28:08 I believe the answer is "no". 20:29:17 On the contrary, I believe the answer is `yes'. The crucial detail is in PROCESS-EPHEMERON. 20:29:41 The datum is never traced *unless* the key is marked. 20:30:04 In this case, there is nothing to mark the keys. 20:32:53 OK. I hadn't even gotten to the implementation part, and I read the description as saying that the datum of one ephemeron could retain the key of another, but not its own key. 20:33:55 -!- carter_ is now known as carter 20:34:09 I suppose the part I didn't make clear was what type of reference there is to the datum, when I said `...iff the only transitive references to the key...pass through the ephemeron'. 20:37:12 -!- carter [~carter@cpe-69-201-181-224.nyc.res.rr.com] has left #scheme 20:46:13 Fare [~Fare@c-76-24-31-46.hsd1.ma.comcast.net] has joined #scheme 20:48:32 Riastradh: Can you explain the claim about the running time of UPDATE-EPHEMERONS? In particular, is `m' ever greater than `n'? 20:48:54 (As an aside, here's a property of Lisp systems that I'd like to see: that in general, any code path for handling space shortage have all the auxiliary storage it should need pre-allocated. Also, it would be nice if there were a good way to deal with the oom killer. But perhaps I ought to be thinking of ponies instead.) 20:49:16 chandler, sure. Suppose an ephemeron's datum is some big, huge, hairy, complicated data structure that is not referenced by anyone else in the heap. 20:49:21 There's only that one ephemeron, though. 20:49:24 So n = 1 and m = huge. 20:49:46 -!- daowee [~daowee@ua-83-227-154-166.cust.bredbandsbolaget.se] has quit [Ping timeout: 265 seconds] 20:49:49 Oh, I see - it's the calls to `mark-hook' during the `update-ephemerons' phase. 20:50:40 Exactly. 20:51:02 daowee [~daowee@ua-83-227-154-166.cust.bredbandsbolaget.se] has joined #scheme 20:55:28 -!- gravicappa [~gravicapp@ppp85-140-66-76.pppoe.mtu-net.ru] has quit [Ping timeout: 265 seconds] 20:56:25 If keys and datums were immutable, you could build a reference graph to cache which ephemerons' datums refer to other ephemerons' keys to avoid incurring that m log n cost more than once. (This doesn't help answer any of your questions.) 20:59:32 -!- karme [~user@stgt-5f7092d1.pool.mediaWays.net] has quit [Remote host closed the connection] 20:59:39 -!- daowee [~daowee@ua-83-227-154-166.cust.bredbandsbolaget.se] has quit [Ping timeout: 246 seconds] 21:00:07 Why not use a hash with links pre-allocated in the ephemerons instead of the red/black tree? 21:03:25 -!- kniu [~kniu@pool-71-106-0-142.lsanca.dsl-w.verizon.net] has quit [Ping timeout: 245 seconds] 21:04:16 Two reasons, although the reasons don't rule it out; I just hadn't thought them through enough to conclude it workable. 21:04:55 (1) Hash tables are hairy to tune. Balanced binary trees, particularly red/black ones, basically take no tuning. (2) It's not enough to pre-allocate the links -- the array must be pre-allocated too. That may make things complicated, and may cause the running time of the garbage collector to be proportional to the total number of objects, dead or alive, not just to the number of live objects. 21:05:54 On the other hand, using a hash table could reduce the storage by one word per ephemeron (minus a constant for the hash table's bookkeeping). 21:06:01 -!- _danb_ [~user@124.149.177.177] has quit [Ping timeout: 276 seconds] 21:06:08 Correction: by two words per ephemeron. 21:11:01 At the cost of one word per ephemeron (so that using a hash table still reduces the storage by one word per ephemeron), I can make garbage collection still run in time proportional only to the number of live objects, not to the number of dead ones, provided that the hash table behave itself: during collection I can link all the live ephemerons into a list, rather than walking the hash table. 21:11:58 -!- kar8nga [~kar8nga@78.104.80.211] has quit [Remote host closed the connection] 21:12:05 (1) I don't dispute; (2) I was thinking that the array size would be proportional to the number of (pre-collection) live ephemerons, and that it could be grown before allocation of ephemerons and shrunk post-collection. 21:12:29 Right, that's what I have in mind. 21:13:45 I think there is a bug: MARK-EPHEMERON-HOOK needs to run even when ephemerons are being updated, because new ephemerons may be discovered live during that process. 21:21:19 Ah, new ephemerons, not just new keys of already-marked ephemerons. That puzzled me for a minute. 21:22:08 OK; I don't have any other suggestions or comments at this point. 21:23:03 Thanks. I'm reworking it to use a hash table now. 21:39:28 Handy: we never have to worry about unpleasant interaction between expansion and shrinkage thresholds, because the hash table's array can be shrunk to exactly the size it needs on garbage-collection. 21:42:14 kniu [~kniu@pool-71-106-0-142.lsanca.dsl-w.verizon.net] has joined #scheme 21:45:02 As an aside, I still don't like observably weak references. Having the garbage collector visibly mutate an object is problematic for the same reason that concurrent mutation of shared state is undesirable, and this behavior also complicates or weakens sandboxing as a sandboxed program can determine information about the state of the sandbox host or other sandboxed programs by observing the collector's behavior, particularly for interned or ... 21:45:08 ... hash-consed objects. 21:46:43 It may be that all space leaks that can be corrected through the use of weak references can be covered by a small set of non-enumerable abstractions. I don't know what those abstractions are, however. 21:49:57 I think it may take more than just non-enumerable collections to replace existing uses of weak references. For instance, I've used weak references to cache large data that would otherwised be read from disk. Some kind of explicit caching or object-memoization abstraction would be needed for that use. 21:50:02 Example: there are some very difficult space leaks in Scheme-CML. I want to use ephemerons to solve some of them. But the way I want to use ephemerons is not clearly replaceable by, say, non-enumerable key-weak hash tables. 21:50:35 Can you explain that case a bit more? 21:51:46 Caching large data is tricky. The reason is that if space isn't really short, I don't want to empty the cache -- I want to keep it full, because it's faster that way. So it would be nice to have an abstraction that lets the garbage collector discard as many objects in the cache as it wants to reclaim as many bytes of storage as it needs. 21:52:14 There are two cases in Scheme-CML, neither of which is very simple... Let's see. 21:53:31 Indeed; the use of weak pointers is only a partial solution to caching, but if you have weak pointers but not a better cache abstraction it's worthwhile to use them to avoid recomputation or I/O when unnecessary. 21:54:21 (I wrote something to do what I just described with large data, but I can't find it now; probably on a disk that died. I don't remember whether I used it for anything.) 21:55:39 When a process calls select (the CML thing, or the system call -- same difference), it registers interest in a particular set of channels (or files, in the Unixy interpretation), and then waits. 21:56:17 In practice, where I'm using weak pointers for caching now I should really be using mmap() and letting the kernel deal with the problem depending on system free memory, or better yet using an external database that does what I described. 21:57:05 The records that it registers are called suspensions. Someone else, doing I/O on a channel (or a file descriptor) finds the first suspension in the queue and resumes it, causing the waiting process to wake up and continue going about its business. 22:00:15 Problem 1: Suppose process P enqueues suspensions on channels A and B, and then its suspension queued on A is resumed by some other process. The suspension on B is still there, with nobody to remove it (and allow it to be garbage-collected) until someone does I/O on B. 22:00:47 Problem 2: Suppose process P enqueues suspensions on some channels, and then is killed by an interrupt. The suspensions are still there, again with nobody to remove them. 22:01:29 -!- stis [~stis@1-1-1-39a.veo.vs.bostream.se] has quit [Remote host closed the connection] 22:03:02 I suppose this is really only one problem. There are two separate implementation problems, but they don't map to the `two' problems I just described. 22:03:35 -!- hadronzoo [~hadronzoo@64.134.6.150] has quit [Quit: hadronzoo] 22:04:07 In the case of Problem 1, the issue is that if P itself retains a reference to its suspension on B then the channel B will be kept alive even if it has no other referents? 22:04:43 hadronzoo [~hadronzoo@64.134.6.150] has joined #scheme 22:04:55 No, B is alive irrespective of whether P uses it -- it's just that nobody plans to do I/O on it for a while. 22:05:31 The issue is that B has a queue on which stale suspensions can accrue. 22:06:21 Rephrase: if you were to solve Problem 1 by having P refer to B so that when it is resumed, it can clean up any other enqueued suspensions, that would introduce a space leak of a different kind, would it not? 22:07:07 I think that would work -- the only hard part is organizing the API so that it happens. However, it wouldn't solve Problem 2. 22:07:24 Sorry, what other space leak do you think it would introduce? 22:07:43 -!- Riastradh has set mode -o Riastradh 22:08:16 P would retain the channel B or at least some suspension object associated with B even if B has no other referents, wouldn't it? 22:08:45 Oh, sure, but I'm not worried about that. After all, P cares about B -- it expressed interest in hearing about I/O on B. 22:11:34 To understand problem 2, I think I'd need to understand a bit more about Scheme-CML. I think I need food more than that, though. 22:11:41 Mostly I'm worried about (1) processes repeatedly expressing interest in I/O on B, which nobody ever does I/O on, causing space to leak; and (2) many processes expressing interest in I/O on a channel on which nobody ever does I/O, and then dying. 22:12:12 Problem 2 is just that space leaks when you hit ^C while a process is in select(2). 22:12:44 Food sounds like a good idea, though. 22:14:42 I understand the scenario, but I don't understand why having P keep a reference to its suspensions can't be used to solve the problem. It's probably something that I'm missing due to lack of aforementioned food. 22:15:58 If you hit ^C, P dies! 22:16:15 Thus it can't go through its suspensions and remove them. 22:16:59 antoszka [~antoszka@unaffiliated/antoszka] has joined #scheme 22:17:09 Doesn't it get a chance to handle it or perform some kill-hook action? And if not why can't the killing process remove them? 22:17:33 Not if something catastrophic happens to P. (E.g.: it is sandboxed, and it has run out of time.) 22:19:20 As for asking the killing process to perform it, well...that may not work either, if the scheduler just stops scheduling P and doesn't tell anyone. This can happen, for example, in Scheme48, if you run ,reset while it's in the middle of trying to unwind all the running threads on the current command level. 22:22:04 -!- choas [~lars@p5792CB3A.dip.t-dialin.net] has quit [Quit: leaving] 22:22:37 So I think it is actually better not to put the burden on P to remove its suspensions after it dies or is resumed, but rather to put the burden on P to clean any stale suspensions on both A and B before it waits. That, or to let the garbage collector handle it, somehow. 22:27:44 samth [~samth@140.239.46.3] has joined #scheme 22:27:49 I can see how ephemerons are useful here, and I'll think on it to see if I can come up with any solutions that avoid observable weakness. 22:27:50 -!- mmc [~michal@109.112.4.71] has quit [Ping timeout: 252 seconds] 22:27:55 I'm trying to remember what I thought was wrong with the suggestion in Reppy's paper for cleaning stale suspensions. 22:28:15 (in which P would do so on both A and B, if they had accrued enough, before it waits) 22:28:57 Oh, here's one problem, which ephemerons would solve. 22:29:33 Having P clean stale suspensions on the queues of A and B before adding anything to them can put a bound on the number of stale suspensions queued up, but each stale suspension can have references to arbitrary objects. 22:35:57 So I think I ought to implement both: clean the queues before putting anything on them, and use ephemerons to represent suspensions. 22:37:53 -!- Fare [~Fare@c-76-24-31-46.hsd1.ma.comcast.net] has quit [Quit: Leaving] 22:45:35 Spewns1 [~jake@97-92-216-245.dhcp.stls.mo.charter.com] has joined #scheme 22:55:20 -!- Spewns1 [~jake@97-92-216-245.dhcp.stls.mo.charter.com] has quit [Quit: Leaving.] 23:00:22 -!- fradgers- [~fradgers-@5adafe9d.bb.sky.com] has left #scheme 23:03:39 mmc [~michal@109.112.210.36] has joined #scheme 23:06:58 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has quit [Remote host closed the connection] 23:08:27 -!- Checkie [4314@unaffiliated/checkie] has quit [Ping timeout: 264 seconds] 23:09:23 Riastradh annotated #113298 "ephemeron implementation, take two: hash tables" at http://paste.lisp.org/display/113298#1 23:17:52 -!- DrDuck [~duck@96.37.145.231] has quit [Ping timeout: 240 seconds] 23:18:24 -!- hadronzoo [~hadronzoo@64.134.6.150] has quit [Quit: hadronzoo] 23:19:09 DrDuck [~duck@96.37.145.231] has joined #scheme 23:25:47 -!- somnium [~user@adsl-65-171-200.dab.bellsouth.net] has quit [Remote host closed the connection] 23:32:01 -!- Mohamdu [~Mohamdu@CPE00222d53fe20-CM00222d53fe1d.cpe.net.cable.rogers.com] has quit [Quit: Leaving] 23:33:02 hadronzoo [~hadronzoo@ppp-70-251-113-72.dsl.rcsntx.swbell.net] has joined #scheme 23:33:52 MrFahrenheit [~RageOfTho@users-55-134.vinet.ba] has joined #scheme 23:43:50 -!- mjonsson [~mjonsson@cpe-98-14-173-5.nyc.res.rr.com] has quit [Ping timeout: 245 seconds] 23:44:57 Adamant [~Adamant@unaffiliated/adamant] has joined #scheme