00:02:03 -!- masm [n=masm@bl10-210-159.dsl.telepac.pt] has quit [Read error: 110 (Connection timed out)] 00:06:12 glogic [n=glogic@97.76.48.98] has joined #scheme 00:11:11 -!- Nshag [i=user@Mix-Orleans-106-3-48.w193-248.abo.wanadoo.fr] has quit ["Quitte"] 00:22:43 -!- Adrinael [i=adrinael@rib4.kyla.fi] has quit [Read error: 104 (Connection reset by peer)] 00:23:04 -!- masm1 [n=masm@bl10-209-186.dsl.telepac.pt] has quit ["Leaving."] 00:23:07 In the five days since the month began, there have been over a hundred messages to the r6rs-discuss mailing list. I hope that some of the participants are capable of summarizing information. 00:25:48 Adrinael [n=adrinael@barrel.rolli.org] has joined #scheme 00:26:09 http://tinyurl.com/scheme-s5 summarizes the SRFIs vs. implementations, 00:26:23 http://tinyurl.com/thing-one summarizes my published views on Thing One. 00:26:36 or rather, restates them in one place 00:26:48 -!- Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has quit ["Leaving..."] 00:27:15 What are COMPONENT, IMPORT, and INCLUDE? 00:27:44 Is INFINITE? necessary? We don't have NONZERO?, for instance. 00:27:58 The names DIV0 and MOD0 are mnemonically null. 00:28:32 Is it necessary to say EXACT-INTEGER-SQRT? I should imagine that INTEGER-SQRT suffices to explain its intent. 00:28:37 CALL/CC is superfluous. 00:29:13 PORT-POSITION and SET-PORT-POSITION! should be PORT-U8-POSITION and SET-PORT-U8-POSITION!. 00:31:50 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit [] 00:31:53 Binary I/O is useful; the R5RS's text I/O is not without substantial modification. 00:32:58 Your proposed #nA notation is significantly different from Common Lisp's #nA notation, and from the R6RS's #vu8 notation. For example, the expression '(foo #A(x y z)) does not evaluate to a two-element list whose second element is an array. 00:33:32 BLOB-REF and BLOB-SET! are wrong; they do not even agree with SRFI 74. 00:34:33 Personally I'd prefer BLOB-REF-U8 over BLOB-U8-REF, but if you want consistency with SRFI 74, I am willing to make no further noise over this matter. 00:34:59 (and BLOB-REF-UNSIGNED over BLOB-UINT-REF) 00:35:21 Oh, dear. BLOB-COPY! doesn't match SRFI 13's STRING-COPY!. 00:37:17 -!- merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has quit [Connection timed out] 00:37:24 *jcowan* begins to respond. 00:37:34 My post on components is still in progress. 00:37:51 I grant that INFINITE? is not necessary, and remove it thus. 00:38:37 I agree about DIV0 and MOD0, but I'm not thrilled with trying to make up my own names, either. 00:39:04 Idea for division routines: 00:39:31 Match prefixes FLOOR, TRUNCATE, CEILING, and EUCLIDEAN with suffixes /, -DIV, and -MOD, or -DIVIDE, -QUOTIENT, and -REMAINDER. 00:39:37 (Choose what subset of prefixes you want.) 00:39:46 What is EUCLIDEAN? 00:40:42 Euclidean division. See . The only operation not pictured, whose semantics should be obvious, is ceiling. 00:41:44 Opened to look at later. 00:41:44 Oh, Common Lisp also has another prefix, ROUND. 00:41:49 Yes. 00:42:15 A useful subset of these prefixes should be useful. This requires some analysis, but I like the consistency of this convention much better than the randomness of DIV/MOD, QUOTIENT/REMAINDER, DIVIDE/MODULO, and DIV0/MOD0. 00:42:20 (and the self-descriptiveness) 00:42:40 I see no reason why the isqrt function should accept anything but exact numbers; if you're inexact, go with SQRT, whether it's an integer or not. 00:42:40 Um: A useful subset of these prefixes should be provided. 00:43:23 CALL/CC is certainly superfluous, but practically universal -- except in standards documents. 00:43:44 I suppose there are still some people who prefer to write out CALL-WITH-CURRENT-CONTINUATION, and their needs (?) are catered to. 00:44:05 I don't understand your point about #nA. 00:44:57 Oh, now I do. 00:45:05 The needs of those who want to reduce the number of aliases are not catered to by making one. 00:45:08 Sorry: 00:45:11 -!- Narrenschiff [n=ritchie@xolotl.plus.com] has quit [] 00:45:17 The needs of those who want to reduce the number of bindings are not catered to by making an alias. 00:45:23 Yes, it would have to be implicitly unquoted inside quotes, which would have to become backquotes ... ugly 00:45:36 I suggest deferring an array notation. 00:45:42 I fear I must. 00:47:26 *jcowan* removes them. 00:48:03 What PORT-POSITION returns need not be an integer; it can also be a cookie meaningful to SET-PORT-POSITION! only. 00:48:07 (per R6RS) 00:48:22 I am thinking of removing them too, as they are rather low-level operations. 00:48:24 OK. I don't think that operation's useful. I want octet positions in binary I/O; that's all. 00:48:33 They are very important operations for reading some binary data. 00:48:59 Important enough for Thing One purposes? 00:49:00 Seeking and backtracking can be quite useful at times. 00:49:04 Absolutely. 00:49:09 peddie [n=peddie@c-67-170-201-38.hsd1.ca.comcast.net] has joined #scheme 00:49:13 -!- glogic [n=glogic@97.76.48.98] has left #scheme 00:49:16 Okay, I'll make them binary only, but keep the names. 00:49:22 Why keep the names? 00:49:30 PORT-U8-POSITION is clearer and does not conflict with the R6RS. 00:50:09 Mmm. 00:50:17 well I'd be happy with the core only specifying things like syntax and procedure application, and having everything else be SRFIs. But w/ev 00:50:30 oh and modules gotta go in core 00:50:44 If little Scheme is to have any file I/O at all, it should have PORT-U8-POSITION and SET-PORT-U8-POSITION!. 00:50:51 (and it should have binary I/O) 00:53:25 synx: whatever the merits of that position, Thing One must include IEEE Scheme (see my r6rs-discuss posting) unless convincing arguments can be provided to remove a feature. 00:55:29 Riastradh: BLOB-REF and BLOB-SET! are synonymous with 74's BLOB-U8-REF/SET!. I intend to write a SRFI updating 74 to provide all the other names, including IEEE floats and compnums. 00:55:42 However, basic blobs have to be accessible somehow. 00:56:03 I'm willing to go with renaming these to include the U8 bit, though. 00:56:10 Why add the new names BLOB-REF and BLOB-SET!? 00:56:37 Analogy with all the other built-in aggregate datatypes (bar lists) 00:57:29 I'd be happy even if numbers were an extension. 00:57:40 Still, neither R6RS nor 74 has them. I banish them, thus. 00:58:19 *jcowan* has saved, so the updated doc should be visible. 00:59:56 Okay. Tell me wherein R5RS I/O is lacking. 01:00:29 (To elaborate a trifle: I don't care for the R6RS's PORT-POSITION because their contract, not merely their implementation, is dependent on the nature of the port. If what you got were always opaque, I shouldn't mind so much.) 01:01:16 Fair enough. I shall not defend it further. 01:01:30 The R5RS's I/O is fit only for local file I/O, to begin with, but it is not fit for reading or writing any data, particularly not binary data, except in whatever random format the implementation chooses. 01:02:13 At the very least, if the language is to support file I/O, it should support reading and writing files as bags of octets. 01:02:32 It is now time for me to eat dinner, I'm afraid. 01:02:45 I shall review any log of replies should you leave one. 01:03:01 I grant that it doesn't do binary I/O. But is it also inadequate for text I/O? 01:04:14 I will also consider adding some stuff for doing binary I/O more than a byte at a time. 01:04:49 arcfide [n=arcfide@99.14.211.8] has joined #scheme 01:09:17 *jcowan* dodges incoming from arcfide. 01:20:22 perdix [n=perdix@sxemacs/devel/perdix] has joined #scheme 01:20:48 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit [Client Quit] 01:23:19 merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has joined #scheme 01:29:56 anyone here tried http://schemik.sourceforge.net/? 01:30:09 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 01:31:34 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 01:32:00 rudybot: later tell masm the text file that I used is not up in an organized way yet, but it will be soon -- mail me and I'll send you a snapshot. 01:32:11 rudybot: ping 01:32:21 *eli* slaps rudybot 01:32:23 offby1` [n=user@q-static-138-125.avvanta.com] has joined #scheme 01:33:10 rudybot_ [n=luser@q-static-138-125.avvanta.com] has joined #scheme 01:33:33 minion: memo for masm: the text file that I used is not up in an organized way yet, but it will be soon -- mail me and I'll send you a snapshot. 01:33:33 Remembered. I'll tell masm when he/she/it next speaks. 01:35:14 -!- rudybot [n=luser@q-static-138-125.avvanta.com] has quit [Read error: 60 (Operation timed out)] 01:37:53 -!- offby1 [n=user@q-static-138-125.avvanta.com] has quit [Nick collision from services.] 01:38:10 -!- offby1` is now known as offby1 01:38:24 -!- bgs100 [n=ian@unaffiliated/bgs100] has left #scheme 01:39:05 *arcfide* keeps typing and typing... 01:39:11 How's everyone tonight? 01:40:54 emma: talking about "vendor lock-in" is a sign that you're spending too much time in CL circles. Only there you get this kind of FUD regularly. 01:44:03 eli haha you called it. I heard all those things from CL people. 01:45:29 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 01:45:47 is it possible to get a recursive repl for debugging in ypsilon? (I can't) 01:47:24 arcfide: Something is happening whereby I am seeing stuff that is not (visibly) cc'd to the list, and some is sent to me and apparently not to the list. 01:48:44 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Remote closed the connection] 01:49:10 emma: Yeah, right after I scanned the #scheme logs, I saw your conversation on #lisp. Let's just say that you had a good dose of uninformation. 01:50:09 Is that like disinformation? 01:52:35 "disinformation" implies intent to mislead, I think -- and those guys seemed just like a bunch of people who are uneducated about the subject. 01:52:42 *jcowan* nods. 01:52:51 "misinformation", then. 01:53:10 Of course, it's the Scheme world where you have the *real* vendor lock-in. 01:53:27 Yeah, "misinformation" works too. 01:53:40 I've woken up this morning in Edinburgh, 01:53:50 spent 2 hours running around amsterdam 01:54:03 then arrived to sticky boston, 01:54:15 I'm therefore not really all sane 01:54:52 jcowan: Are you refrencing my messages where I frequently forget to CC and then redirect them later? 01:54:58 Yes. 01:55:16 The result is that when I reply, the result doesn't go to the list, and I can't send it there myself because I don't want to publish (part of) a private message. 01:55:18 jcowan: Apologies for that. I know it can mess up some filtering. I'm trying to remind myself to use Reply All. 01:55:40 So if you get any such replies directly from me, please forward them to the list. 01:55:46 There will be at least 3-4. 01:55:53 *arcfide* nods. 01:56:06 eli: my sympathies, as someone who doesn't like to go more than a few miles in any direction. 01:58:19 -!- cornucopic [n=r00t@202.3.77.180] has quit [Remote closed the connection] 01:58:34 jcowan: well, I *like* it -- I could choose to spend that time in the airport and hack -- but it's not often that I can see amsterdam for ~$10, anyway, I'm basically too exhausted to locate the right words, and "uninformation" was working ok in my half-sleep state. 01:59:36 also, hash brownies 01:59:40 Sure. 02:00:02 I just thought you were trying to draw a distinction that turned out not to be there. I'm not ragging on your diction. 02:00:14 There was a surprisingly large number of stores doing those things, 02:00:33 surprising because my obvious assumption is that they're plain tourist traps. 02:00:36 arcfide: I *always* use Reply All unless I consciously think, No, this has to go to the author privately. 02:01:17 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["leaving"] 02:03:22 When using Reply All, I sometimes prune the recipient list if I've noticed that there are people whose connection to the thread was 5-10 messages back still listed as direct recipients. 02:04:42 *jcowan* writes too damn many messages to do that, which means some people get two copies. 02:04:59 I default to Reply as a safety and etiquette mechanism, the cases -- often enough -- that I really shouldn't send something out. It's not a perfect system, of course. 02:05:04 Recent versions of mailman are clever enough not to double-deliver if it can be avoided. 02:05:28 I always trim to only the direct last poster in my message unless there is active participation by all. 02:05:37 chandler: I broke that. :-P 02:05:39 -!- jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [] 02:06:10 jcowan: Part of the problem is that I am processing these Scheme discussions in bulk, and that put me into a mode in my brain where I wasn't thinking about the Reply All button. 02:06:26 At least I have taken care of all of them to which I can make quick replies. 02:06:59 I think people must think I'm crazy, because I post all these in a matter of minutes apart. 02:08:04 We always knew you were nutsy bozo, arcfide. 02:08:49 jcowan: Hehe, what was your first clue? 02:08:51 jcowan, no, eli is saying that you dont have vendor lock-in in the scheme world. 02:09:55 jcowan: Do you want me to redirect all your responses to me to the list, or just some? 02:09:57 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Remote closed the connection] 02:10:10 emma: I know he is, but he is IMO incorrect to say so. 02:10:20 arcfide: Just the ones that didn't go to the list, evidently. 02:14:52 But if you mean, are any of them private, no. 02:15:14 steiger [n=steiger@189.105.53.164] has joined #scheme 02:16:52 jcowan: Well, I hope that all of the messages without R6RS-discuss in the addressees did not make it to the list. 02:17:45 jcowan: I agree that there's a lot of administrative overhead associated with splitting things up, but the big reason I like splitting them up is because it makes it more likely that any one of them will be accepted by vote in the community. 02:18:16 yeah right on. 02:18:38 You have two issues: Deciding what belongs in or out of the standard, and deciding how to do X properly once it has been decided to add it. 02:18:53 Both of these are non-trivial issues in the Scheme community. 02:19:08 I grant #1, but I am trying to dodge #2 as much as possible by going with what's already been standardized de facto or de jure. 02:19:27 The first makes it difficult to get consensus on any bulk standard implementing more than one thing beyond IEEE. 02:19:44 The second, as you point out, has already had lots of nice vetting through the SRFI process. 02:20:04 However, many new things that *don't* have SRFIs are going to be suggested for the main standard, and some of them just might make it in. 02:20:44 As soon as even one of those make it in, we end up with the same situation we had in R6RS, where the group isn't just standardizing the well establish practices anymore, but is actually trying to design something from scratch. 02:20:47 That takes a long time. 02:21:07 And there is some contention even in the basics, like records and the like. 02:21:28 peter_12 [n=peter_12@S0106000f66bc42b9.vn.shawcable.net] has joined #scheme 02:21:40 The SRFIs are a great place to pull in standards. But I think you're compounding trouble by trying to tackle it all in one go. 02:21:50 I say we get the quickies out of the way, right away. 02:22:07 Standardize the SRFIs that are well used and less contentious. 02:22:16 Start expanding Scheme's standard API. 02:22:49 That is exactly what I *am* doing. Or think I am. What is it you think I'm doing other than that? 02:22:55 In MzScheme if i do (require scheme/foreign) then ffi-lib? is defined but get-ffi-obj is not defined. 02:23:01 any idea why? 02:23:28 jcowan: You're suggesting that we standardize some of these things, but only as a part of a bigger standard. The more things you try to standardize into a single standard, the longer it will take to push that standard through to a final status. 02:23:41 It's going to be a fight to get anything approved for Core Scheme. 02:24:05 Bette to separate it and standardize it separately. That will satisfy the purists, as well as the industrialists. 02:24:10 s/Bette/Better/ 02:24:40 The purists will still have their small Scheme upon which to do whatever they do, and the people who do general purpose programming will have a standard they can feel happy about. 02:25:17 That is, progress on all of this can occur in parallell, so that things that don't need much argument can *become* standards much faster, while the battles about the harder stuff ar being fought elsewhere. 02:26:15 karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 02:26:22 jcowan: Otherwise, I'm very confident that the process will bog down around the voters who aren't willing to fully back things because it doesn't have everything they want or has too much. 02:26:37 kenhkan [n=kenhkan@CPE001195775501-CM00122544956a.cpe.net.cable.rogers.com] has joined #scheme 02:26:40 Separating it out will make it less traumatic. 02:26:45 *karlw* sighs 02:26:56 -!- kenhkan [n=kenhkan@CPE001195775501-CM00122544956a.cpe.net.cable.rogers.com] has left #scheme 02:27:46 -!- karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has quit [Client Quit] 02:27:48 jcowan: You know what I mean? I think we both have the same goals of trying to get some of these basic things that everyone uses standardized, I think we just disagree slightly on the fastest and most expedient way to do this. 02:30:53 karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 02:31:37 I like Vim. What are good editing settings for Lisp? 02:32:44 :q! RET emacs 02:33:34 thhhh 02:33:35 karlw: You can use their lisp modes, and do some editing of the .exrc or whatever it is to set the indenting on any special procedures. 02:33:37 -!- karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has quit [Read error: 104 (Connection reset by peer)] 02:33:51 Well that was just...*sniff*. 02:37:11 Riastradh: No, no! I don't think he wants to quit vim. :!emacs RET 02:37:33 I see, chandler. That's beyond my ex(1)pertise. 02:37:37 karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 02:38:01 Too many people use Vim and Emacs. Acme FTW. 02:39:07 Emacs relies on a version of Common Lisp from 1982 that rms likes. 02:39:51 There's nothing Common about it. 02:40:21 It's a horrible, awful language and the sooner it dies, the better off we will all be. 02:41:12 jcowan, binary I/O is *easy* and non-controversial. If you don't want to get into a mess about locales and codec decisions and transitions and cruft, then it would be better to leave the state of affairs concerning text as un(der)specified as in the R5RS. 02:41:35 I don't get what is broken about SRFI 39 even after reading the rationale. So Schemes have different threading semantics. Of course parameters will behave differently with each of them! 02:42:08 Of course, the idea of spawning a fresh environment or copying rather than sharing the code makes me cringe, but...*shrug*. 02:42:23 s/the code/the environment/ 02:42:46 Emacs vs. vi is like the Israeli-Palestinian conflict---it's the users who suffer at the hands of elite ministers and clerics. 02:42:55 foof [n=user@dn157-046.naist.jp] has joined #scheme 02:43:01 How exactly would you share a dynamic environment sensibly? 02:43:04 *arcfide* grabs food, and eats. 02:43:18 chandler: I'll talk about that once I get back. :-) 02:43:46 Isn't this problem exactly analogous to the issue of special variables in Common Lisp, where the common consensus is to separate the child thread's environment from the parent's environment? 02:44:08 The disagreement between CL implementations is over the values of special variables in that new environment. 02:44:22 Are they inherited from the current binding, or from the global binding (if any)? 02:46:21 Emacs needs to die and the developers need to write a new editor based on something like Scheme, JS, or Haskell. 02:47:06 Have you heard of Yi? 02:47:16 http://www.haskell.org/haskellwiki/Yi 02:47:43 karlw: You mean like drscheme? 02:49:19 *karlw* bursts into catatonic laughter 02:49:52 catatonic laughter, so basically you just stiffen up and stare fixedly forward 02:50:12 chandler: I can't get it to compile :-( 02:50:54 I didn't say drscheme is a good editor, but it a new editor written by developers based on something like Scheme. 02:51:08 arcfide: Acme or Wily, as the case may be. 02:51:24 arcfide: I think you're right. 02:51:35 synx: Okay, then wildly hysterical paranoid laughter. 02:53:02 tjafk1 [n=timj@e176221231.adsl.alicedsl.de] has joined #scheme 02:53:21 Riastradh: Indeed, binary I/O is so non-controversial that no Scheme standard before R6RS has ever had it, and even CL, that repository of all ideas good and bad, barely makes mention of it. 02:54:37 BTW, components vs. modules vs. libraries: I introduce a new name to make it clear that the semantics of a component body are the same as those of the top-level. Does anyone think that's a Bad Thing, or are there people wedded to the R6RS library-body semantics? 02:55:03 DrScheme just needs a high-level editor API. 02:55:37 jcowan: what do you mean by component, give an example? 02:56:15 (component (export foo bar) (import scheme) (define foo ...) (random-form) (define bar ...) (define baz ...)) 02:56:29 oops 02:56:34 s/component/component quux 02:56:47 If you do (import quux), the names foo and bar (but not baz) become visible to you. 02:57:11 Oh okay so like PLT units, except sanely named. 02:57:15 peter_12: you need to declare (unsafe!) before get-ffi-obj becomes available. 02:57:27 Another component: (component yugg (export foo bar baz) (import scheme) (import blah) (include "yugg.scm)) 02:57:38 s/scm/scm" 02:57:43 Daemmerung: thanks 02:58:47 I don't... like top-level semantics. It's hard to say what the top-level exactly means. It's not in a module or in any kind of context... 02:59:07 my posting will discuss that 02:59:11 excerpt: 02:59:14 What I do is only put things like modules at the top-level, and otherwise avoid it like the plague. 02:59:36 You might find it useful to define modules inside modules, though obviously PLT hasn't. 02:59:51 lisppaste: help 02:59:52 To use the lisppaste bot, visit http://paste.lisp.org/new/scheme and enter your paste. 02:59:52 But once you're in a module, or other syntactic form, then you can have a clearly defined syntax for what you're able to do. 03:00:08 There's no define-syntax for the top-level though. 03:01:11 jcowan pasted "R6RS vs. R5RS programming" at http://paste.lisp.org/display/86641 03:01:37 *karlw* rolls hi 03:01:44 *chandler* raises an eyebrow at the highlighting of `the' 03:01:56 That's, uh, not right. 03:02:02 *karlw* *rolls his eyes 03:02:11 Arrgh. I tried to turn highlight offf, but apparently it turned it back on "for" me. 03:02:18 jcowan: That's pretty much the basic form of every module system, including R6RS libraries. 03:02:31 jcowan: Hm. I wonder how and why. 03:02:45 jcowan: It is also pretty close to Chez Scheme's modules. 03:03:25 I left out the title, so it redisplayed the form, and I filled in a title but didn't notice that the drop-downs had been reset to default, I think. 03:03:36 It's pretty close to Chicken, too, modulo syntax. 03:04:01 I also want one more feature: in R6RS syntax it would be (import (prefix yurgh yugg)) 03:04:10 which gives you yurgh:foo and yurgh:bar. 03:04:29 Imports and includes can appear anywhere in the top level or in a component. 03:04:44 jcowan: Chez Scheme's module system is largely syntactic, which appeals to me at a certain level, but I'm not sure I like the idea of creating yet another module system. 03:04:46 Are the R#RS conventions an annual thing? Or is it an irregular event that happens when it is necessary? 03:04:55 Very irregular, very rare. 03:05:02 -!- peter_12 [n=peter_12@S0106000f66bc42b9.vn.shawcable.net] has quit [Read error: 104 (Connection reset by peer)] 03:05:30 chandler: Let's say I have a form FORK-THREAD that starts a new thread. It takes a thunk and runs that thunk in a new thread. 03:05:32 It's really a wonderful and exciting thing to watch. I really am so glad you guys take it so seriously. I hope you will all do the right thing! 03:05:37 We have had only five in the period 1985-2009. 03:05:52 How is it decided who gets to vote? 03:06:10 It's not yet certain, but people will probably send in mini-resumes 03:06:35 cool. 03:06:50 chandler: Even with the trheading, I want my variables to be lexically scoped, and that means that if I reference 'var' in that thunk, and do something to it, but that 'var' is defined outside of the thunk, I want the operations effect to be visible to anything that should be able to see 'var'. I think that is a fairly natural way of thinking about it. 03:06:52 I wish it was a real convention. We could wear funny hats. 03:06:59 grope waitresses! 03:07:04 Totally. 03:07:30 It's only serious to the extent that you think your ideas are good enough for you to care. 03:07:45 And call our wives drunkenly blubbering for forgiveness at 3am. Hey, wait, I can do that already. 03:07:58 chandler: So, in this sense, forking a thread really isn't that different from running the procedure itself. In fact, it shouldn't behave any differently unless thread local parameters are involved. 03:08:06 I hope you all will find just the right balance between keeping Scheme 'pure' and 'minimal' which is really one of the things that makes it unique and precious, while at the same time allowing for just the right kind of evolutions to keep it useful and relevant. 03:08:30 Daemmerung: Wives? What are you talking about? 03:08:31 chandler: So, instead of (THUNK) I should be able to do (FORK-THREAD THUNK) and not worry, assuming that I don't use the THUNK's return value. 03:08:57 -!- tjafk2 [n=timj@e176198225.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 03:09:09 -!- kniu [n=kniu@ELMUNDO.RES.CMU.EDU] has quit [Read error: 110 (Connection timed out)] 03:09:09 chandler: Now, if I need to have some individual non-shared state for the thread, then I can use a thread local parameter and parameterize, and any changes to that parameter will stay local to the thread. 03:09:37 I'm lucky if I get a handshake. 03:10:10 Yes, Daemmerung, just how many wives do you have at present, eh? 03:10:16 chandler: I hope that makes sense. 03:10:25 jcowan: I am right about using Acme? 03:10:31 Has anyone ever thought of having like a two layer standard. The primary layer standard which is truly pure and minimal. And a secondary layer standard which is a bit more featureful, but could be counted on to be in all Schemes, and yet optional for the coders working with those Schemes? 03:10:52 emma: You should probably do some reading. 03:10:59 I've never used Acme, but I do like Wily, which is a workalike w/o the Plan 9 style file system. 03:11:03 emma: I think you're missing a bit of backstory. :-) 03:11:07 some people were talking about that earlier emma. For R7RS, that is. 03:11:21 jcowan: Acme works on Linux/UNIX by using Plan9ports. 03:11:23 emma: This standardization process is precisely designed to do that. 03:11:30 arcfide: So I've heard. 03:11:50 jcowan: I've been using Acme for Scheme development, and rather liking. 03:11:55 s/liking/liking it/ 03:12:29 *offby1* would fear that any product named Acme would explode 03:12:35 Heheh. 03:12:40 leaving me suspended in mid-air just past the edge of the cliff 03:12:43 Quite. 03:12:50 for a few seconds, or until I realized just where I was. 03:12:53 jcowan: I would guess exactly (- (exp (* 1729 pi)) 1) wives. 03:13:00 *offby1* holds up a large sign saying "Yipe!" 03:13:09 and your feet would realize this first, offby1 03:13:13 That's exactly why its evil twin is called Wily. 03:13:18 thus elongating me vertically 03:13:28 my eyeballs being the last to realize 03:13:29 Riastradh: To your knowledge, is there anything outside of the lack of 'include' and the existence of implicit exports in R6RS libraries that makes it impossible to reasonably parse libraries without having to visit/examine the contained source? 03:13:43 Im afraid using any ACME product inevitably results in having an anvil fall on your head. 03:13:57 "Implicit exports"? What are they? 03:14:37 *karlw* prefers Ren and Stimpy. 03:14:48 jcowan: In R6RS libraries, you do not have to state the procedures to which a given syntax might resolve because potentially, all libraries export all their procedure implicitly if a syntax might require them. 03:15:06 One wife to rule them all, etc., etc. 03:15:11 Ah yes. The old proc in the macro trick! ~~ Don Adams imitation ~~ 03:15:37 In the jcowan order they are all first-class. 03:15:51 jcowan: This is possibly one of the worst design decisions I can think of regarding the libraries, and i don't know who got everyone to compromise to that position, because every editor I know worked on a system that explitly requires naming the procedures on which a syntax might depend. 03:15:58 *Daemmerung* hold up a tiny umbrella to shield against the descending anvil 03:16:14 jcowan: If anything is to be done, that is one thing that should change. 03:16:32 *jcowan* makes a note of it. 03:16:57 jcowan: The reason this is so bad is that it makes library bindings inclusion optimization rather difficult. 03:17:10 I quite see that. 03:17:30 And I don't see precedence for it. But maybe I'm blind. 03:18:41 Also, I'm not a big fan of the explicit phasing, but...that's probably because I'm used to using 'meta' in conjunction with Chez modules to control the phasing for a module form. 03:20:11 Fortunately, people who are sensible enough to stick to syntax-rules don't have to worry about that stuff. 03:20:20 jcowan: Hey! 03:20:22 :-) 03:20:35 *jcowan* sure doesn't want anything but s-r in T1. 03:20:49 Indeed and AMEN! 03:21:22 *arcfide* grabs his .357 Magnum and hunts for DEFMACRO heathens. 03:21:47 *jcowan* grabs his pitchfork and hunts for low-level macro heretics. 03:21:48 *karlw* covers Daemmerung with hot lard and sets loose his IRC bot. 03:22:20 jcowan: Do you not like any hygiene breakage? Would you accept a high-level hygiene bending system? 03:22:36 I don't like any hygiene breakage. 03:22:50 chandler: Does my explanation of what I think of shared environments make any sense? 03:23:20 *Daemmerung* conjugate pretty some day 03:24:36 Daemmerung: Huh? 03:24:39 jcowan: Why not? 03:24:46 jcowan: You don't see any good time to use it? 03:25:21 Sorry, can't multitask worth a damn. 03:27:44 You can't define modules without hygiene breakage. 03:28:10 The syntax for modules renames symbols, classic breakage of hygiene. 03:28:40 (require (prefix-in something: "module.ss")) f/i... 03:28:43 We need ``Customizable Editor Programming Done Right'' 03:29:08 Yum, I smell lard 03:29:21 -!- rudybot_ is now known as rudybot 03:29:26 I don't expect to implement modules with syntax-rules, no. 03:29:34 s/modules/components 03:30:34 peter_12 [n=peter_12@S0106000f66bc42b9.vn.shawcable.net] has joined #scheme 03:31:24 Question: R6RS disallows simple library names, but practically no one else does. I see three alternatives: 1) disallow, 2) allow, but foo is the same as (foo), 3) allow, but foo and (foo) are distinct. 03:31:30 Anyone have opinions? 03:31:43 what I like to do is confine non-hygenic macros to very simple well insulated things, and all the rest of the macros can use them, while remaining hygenic. 03:33:53 What sort of things, synx? 03:35:04 jcowan: I was considering that referencing foo from library (bar baz) means (bar foo). 03:35:18 karlw: If you want Emacs in Scheme, check out Edwin. 03:35:19 like (prefix-in) could be non-hygenic, but a macro that used (prefix-in) could be hygenic. 03:35:56 jcowan: Don't you want to be able to define modules as syntax. IMO< that is something that *should* be possible in a more complete Scheme. 03:36:21 arcfide: I'm speaking hypothetically. 03:36:50 jcowan: R6RS libraries do have the nicety of mapping naturally onto a file system, in general. 03:37:12 foof: I'm not sure I like that. 03:37:35 Edwin is not ``widely used'' modulo functional programmers. 03:37:37 -!- hosh [n=hosh@c-71-199-176-82.hsd1.ga.comcast.net] has quit [Read error: 110 (Connection timed out)] 03:37:51 jcowan: You should also consider upwards compatibility. 03:38:01 arcfide: When you're nested three or more like (foo bar baz) and want to import a lot of related modules with the same (foo bar ...) prefix, it can be handy. 03:38:13 jcowan: If there is any chance that versioning is going to go into the larger module system, it might make sense to stick with the R6RS convention. 03:38:43 "inc is a procedure that adds 1 to its argument" 03:38:47 does that mean: 03:38:50 foof: Just write a syntax: (import-with-prefix (foo bar) baz buz beez). 03:38:56 (define (inc n) (+ n 1)) 03:39:01 Oh WAIT! 03:39:08 R6RS libraries don't let you do that! :-) 03:39:15 Stupid R6RS libraries. 03:40:08 Piratero: Normally, the right definition is, "Inc returns the value of its argument added to 1." 03:40:30 s/returns/evaluates to/ 03:40:49 -!- karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has left #scheme 03:40:55 Bah... 03:41:03 I'm not interested enough to clarify that further. 03:41:16 okay, so i have it -- thanks 03:41:19 just making sure 03:41:20 Well, upward compatibility is tricky, because of the inside semantics. 03:41:20 foof: I consider it a very handy thing to be able to generate modules from syntax. Others may disagree. 03:41:56 foof: For example, I'm writing a way of doing parameterized modules in Chez with a rather small macro. That's a nice thing, imo. 03:42:00 I think the price to be paid for hygiene-breaking is not worth being able to implement such simple modules as these with macros. 03:42:23 Oh, *generate* them. Yes, that works for me. I don't think even R6RS bans that. 03:42:34 jcowan: They do, I think. 03:42:35 What you can't do is generate just the import or export clauses. 03:42:44 jcowan: At least, there's no real way to generate them meaningfully. 03:43:36 jcowan: So, I have become kind of fond of modules as syntax. 03:43:38 Because of hygiene, you mean? 03:43:49 jcowan: No, just that it's not possible, I think. 03:44:00 I remember discussing this with Kent. 03:44:21 (define-syntax nodule () ((xodule . foo) (module . foo))), that doesn't work? 03:44:27 R6RS' semantics and model of evaluation, and some other things. Since libraries are top-level entities, it's not possible to have a definition before getting to them. 03:44:36 Ah. 03:44:37 Right. 03:45:30 I think that many of the complicated things that we want to do with macros can be made easier if we just allow modules to be syntax, and then, we can add the features we want easily enough. 03:46:35 Of course, not everyone agrees. :-) 03:48:41 jcowan: But, obviously, I'm a nutsy frenchman in Chinese clothing who hails from *that* Scheme place. 03:48:58 What does it mean "be sytnax"? 03:50:03 jcowan: It means that they aren't specially treated by the semantics as anything other than a glorified code transformation. In other words, like Chez's module system. ;-) 03:50:22 I want to be able to generate them like any other code. 03:53:29 Oh, I'm fine with that. 03:53:34 There are three issues: 03:53:41 1) can a macro output a module? 03:53:49 2) can a macro output any given *part* of a module? 03:54:01 3) can a module be defined using define-syntax? 03:54:06 My answers: yes, mostly, no. 03:54:42 In particular, I can see not allowing a macro to generate the export clause without generating the whole module. 03:55:10 That way, trivial inspection of a module source will tell you what it exports. 03:56:28 sorry, 3 shuld read "Can 'module' be defined using define-syntax?" 04:00:06 offby2 [n=fircuser@q-static-138-125.avvanta.com] has joined #scheme 04:00:24 -!- MononcQc [i=MononcQc@modemcable062.225-20-96.mc.videotron.ca] has quit ["DOWNLOADING NEXT VERSION OF INTERNET"] 04:03:13 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 04:04:35 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 04:04:45 -!- offby2 [n=fircuser@q-static-138-125.avvanta.com] has quit [Remote closed the connection] 04:05:20 MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has joined #scheme 04:14:01 jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 04:14:22 -!- peter_12 [n=peter_12@S0106000f66bc42b9.vn.shawcable.net] has quit [] 04:15:04 jcowan: I think the only really important part that a macro should be able to generate as a component is the import. 04:15:17 There's really just the import, export, and name. 04:15:35 In Chez, the import form isn't even part of the module form. 04:15:43 It's a separate syntax. that can be used separately. 04:15:44 People who like interfaces want to be able to generate the export. 04:16:02 foof: Do you have an example of this? 04:16:30 http://community.schemewiki.org/?scheme48-module-system 04:16:54 See the section "compound interface." 04:17:28 grettke [n=grettke@CPE-69-23-38-57.wi.res.rr.com] has joined #scheme 04:17:57 peter_12 [n=peter_12@S0106000f66bc42b9.vn.shawcable.net] has joined #scheme 04:18:05 For me, import is autonomous syntax, not part of the syntax of modules. 04:18:20 Export, though, is pretty tightly bound to being a module; the top level can't sensibly export anything. 04:21:30 Regardless, this is all assuming you define "modules as macros," which you'll never get people to agree on. 04:21:47 What do you mean "as macros"? 04:22:16 With a module system like Scheme48's it's impossible to split import from the module definition (though it let's you abstract both import and export). 04:22:38 At the top level, there are expressions, definitions, and macro calls which expand into either expressions or definitions. 04:22:55 right 04:23:09 Inside a module, there is a name, an export list, and a body consisting of expressions, definitions, and macro calls which expand into either epxressions or definitions. 04:23:23 (An import is a kind of expression; so is an include.) 04:23:30 wrong 04:23:52 Okay, what part is wrong? 04:24:07 Wait, are we specifically talking about the R6RS macro system? Or the hypothetical small scheme macro system? 04:24:13 Hypothetical. 04:24:52 Then in the Scheme48 model, module information is out-of-band from the Scheme source code. 04:25:20 Include allows that but does not require it. 04:25:21 foof: http://www.scheme.com/csug8/syntax.html#./syntax:h4 04:25:57 arcfide: I know the Chez module syntax. 04:25:59 IIRC, including in S48 has to be at the top level of a module, but I would allow it anywhere an expression is allowed. 04:26:05 foof: If you look at the examples, you can see a way of separating interface from the definitions in a module form. You could easily expand this further to allow for compound interfaces. 04:26:34 "include" is orthogonal, and can in fact be defined as a macro in any scheme 04:26:40 How? 04:26:48 Or I should say, expanding into what? 04:26:49 jcowan, I disagree with your interpretation of the R5RS's semantics in . One can *use* the R5RS's semantics to interpret the body of a (general-meaning) module -- just as Scheme48 does. 04:26:50 -!- grettke [n=grettke@CPE-69-23-38-57.wi.res.rr.com] has left #scheme 04:26:54 jcowan: See the Chez Scheme manual for an example. 04:27:17 jcowan: It exapnds into a read over a file name that reads in the forms and converts them to syntax in the scope in which the include form exists. 04:27:33 jcowan: It's a fairly standard example used to show how you might use syntax-case. 04:28:02 arcfide, in the R6RS's library system, you need to read the library form (or use some silly specialized reader) in order to get at any information in them. That's tantamount to reading the source, unless you use such a silly specialized reader to read only the first couple subforms of a LIBRARY form. 04:28:07 grettke [n=grettke@CPE-69-23-38-57.wi.res.rr.com] has joined #scheme 04:28:29 As for the rest of the conversation, it is too long and elaborate for me to follow it. 04:28:43 I think that's true of all systems, no? It's just that better module systems have includes. 04:28:53 Riastradh: Since you don't like modules as syntax, you're probably not going to like the conversation. ;-) 04:29:09 arcfide: Where would I find this example? 04:29:13 jcowan: Scheme48's module system is almost like its own language of modules. 04:29:18 jcowan: Hang on while I find it. 04:29:23 Thanks. 04:29:34 I promised earlier this week to write something up about module systems. I have not yet done this, so I shall have to take the view of across the pond about when the week ends. 04:30:00 arcfide: That's my point. "Modules as syntax" is just one approach, which many people disagree with. You won't be able to get consensus for that in small scheme. 04:30:07 jcowan: http://www.scheme.com/csug8/syntax.html#./syntax:s12 04:30:28 foof: I'm not arguing tha tthey should be implemented as syntax, but that it should be possible to do so. 04:30:59 arcfide: Sure, and the Scheme48 module system _could_ be implemented as a macro. 04:31:10 (Scheme48's configuration language is, in fact, implemented as a collection of macros.) 04:31:28 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Remote closed the connection] 04:31:54 foof: Basically, I just want to be able to generate my macros and do other things with them along those lines. Like nesting them, &c. 04:32:02 arcfide: But is it possible to implement a reasonable module system using syntax-rules alone? I think not. 04:32:05 However a module system which explicitly provides extensions such as macro-generated (import ...) forms _can't_ be implemented by all popular module systems. 04:32:25 jcowan: Hahah, um...probably not. But I'm not the one arguing for such a thing. 04:32:33 Is anyone? 04:32:43 jcowan: Not that I know of. 04:32:46 I doubt it, since import is obviously (as someone said above) hygiene-breaking. 04:32:51 jcowan: Does that 'include' example make sense? 04:33:17 Yes, although I sort of woo-woo over the details of syntax-case. 04:33:21 foof: Sorry, I don't understand your last sentence. 04:33:29 jcowan: Wimp. 04:34:05 arcfide: If you allow (import ...) forms to be generated by macros, you're exposing implementation details of the module system, which is inconsistent with certain implementations. 04:34:35 Specifically, you're breaking the abstraction between the module specification and the code itself. 04:34:44 I don't follow that. 04:34:53 foof: Aah. I'm not sure why that would be considered an implementation detali, but I rather like to be able to have import as a separate form from the module form itself. 04:35:19 Yes, exactly what I meant by saying that (import ...) is an ordinary expression. 04:35:27 jcowan: There is an argument that you shouldn't be able to do that. 04:35:33 What is that argument? 04:35:51 jcowan: How do you not follow? Do you not realize that it's impossible to implement an `import' macro in Scheme48? 04:36:00 They want the imports and exports to be tied directly to the module form, so that the module is a complete specification. Having imports inside the code means you may have to expand the code to determine all the imports. 04:36:29 foof: why should I understand what is and what is not possible in a specific Scheme I don't even use? 04:37:20 arcfide: I see the appeal of that, but in an interaction-based system like R5RS or T1, it seems to me that you ought to be able to import at any time. 04:37:30 Interaction-based system? 04:37:53 Where do you get the idea that the R5RS is an interaction-based system? Is it from the same source as the idea that the R6RS is an anti-interaction-based system? 04:38:21 jcowan: Scheme48 is one representative example of a general type of module system which deserves important consideration. It will also be impossible to macro-generate import forms in chibi-scheme. 04:38:28 should the following work as a shell script with a shebang line in PLT? http://pastebin.ca/1555754 04:38:32 apparently it does not 04:38:53 foof: ;-( 04:39:23 I'm seeing the error 04:39:23 default-load-handler: expected a `module' declaration for `mapapp-cgi', found: something else in: # jcowan: I don't think the issue is interactive or non-interactive. It's whether you want to be able to move, relocate, and generate import forms. I do, some don't. To some, the benefits of not being able to do that outweigh the benefits of being able to do that. 04:40:21 However, using the module configuration language, you can have equivalent functionality. 04:40:23 jcowan: I don't think that there is necessarily a right answer on this one either, which is why a standard module system is going to be so hard. 04:40:41 Well, we can't define a module system that is the intersection of all existing systems, because that is {}. 04:40:57 Jafet [n=Jafet@unaffiliated/jafet] has joined #scheme 04:41:02 jcowan: They tried that, and R6RS libraries were the results. You end up with R6RS libraries if you compromise. 04:41:15 jcowan: It's just one of those things that people fundamentally disagree one. 04:41:39 jcowan: Anyways, I'm taking off. 04:41:45 Riastradh: Perhaps the letter of R5RS permits an implementation to require every name to be defined before it is used, and forbids redefinition, but I know of no actual R5RS that does so. 04:41:49 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 04:41:51 Yes, you'll end up with something very much like R6RS libraries (though I still would argue for a syntactic separation of the module specification from the source code, in addition to the semantic separation). 04:41:54 arcfide: Thanks for all the fish. 04:42:10 Is there any reason, beyond a suggestion in the draft charter for WG1, that little Scheme must contain a module system? 04:42:12 Hehe. 04:42:17 -!- grettke [n=grettke@CPE-69-23-38-57.wi.res.rr.com] has quit [] 04:42:24 jcowan, sorry, what was that in response to? 04:42:27 Riastradh: Apparently a lot of people want it in the WG1. I'm not one of them. 04:42:33 There is no reason, beyond the draft charter, why it should exist at all. 04:42:36 -!- jonrafkind [n=jon@98.202.86.149] has quit [Read error: 110 (Connection timed out)] 04:42:48 I think it had something to do with interaction, but I didn't follow the connection. 04:42:54 grettke [n=grettke@CPE-69-23-38-57.wi.res.rr.com] has joined #scheme 04:43:00 If the SC changes the charter, I'll adjust to that. As things stand I make no complaint of it. 04:43:18 I want a module system in small scheme. I just want to be able to share code dammit! 04:43:54 I'm even open to the possiblity of having a syntactic, Chez-style module system *and* a sort of top-level library specification system that has separate design goals. If we had both, i think that would work just fine. 04:44:01 Well, if T2 contains include in its library bodies, then you *can* share most of the code. 04:44:04 And they could serve different purposes. 04:44:42 *arcfide* leaves. 04:44:47 jcowan: How? By manually bootstrapping a crappy macro-based module system with no real compiler or tool support? No thanks. 04:44:49 Au revoir, peoples! 04:45:16 Stand not upon the order of your going, but go at once! 04:45:16 <- SLIB is that way 04:45:35 foof: Huh? 04:45:37 -!- arcfide [n=arcfide@99.14.211.8] has left #scheme 04:46:04 A code body could work perfectly well in both T1 and T2, provided it met T2 constraints (defs before exprs). 04:46:12 Bletch. 04:46:15 That is a stupid constraint. 04:46:25 I agree, but I doubt that T2 will lack it. 04:46:35 I may be quite wrong, of course. 04:46:39 It is unjustifiable. 04:46:56 jcowan: Maybe I misunderstood, how were you suggesting using include to share code? 04:47:19 foof: (library (foo) (import (frob) (grovel) (include)) (export zork) (include "the-real-source-code.scm")) 04:47:20 foo.t1: (component (export ...) (import ... ...) (include "foo.scm")) 04:47:41 foo.t2: (library (export ...) (import ...) (whatever ...) (include "foo.scm") 04:48:12 jcowan: You mean use a separate wrapper file for every popular module system? 04:48:29 No, foof. Write it once in a sensible module system and then write a program that generates the others. 04:48:33 Quite. 04:48:43 Ahem. Write it once in a module system that statically provides all the information you need, and then, &c. 04:48:45 Except we may wind up with two sensible module systems, each for its own context. 04:49:00 Then they wouldn't be very sensible. 04:49:08 kniu [n=kniu@CMU-284828.WV.CC.CMU.EDU] has joined #scheme 04:49:34 R6RS-ites believe that the semantics of R5RS are underspecified. 04:49:42 -!- grettke [n=grettke@CPE-69-23-38-57.wi.res.rr.com] has quit [] 04:49:50 How many Schemes preserve source-code information in their include macros? Chicken doesn't. 04:49:58 Chicken could. 04:50:03 PLT Scheme does. 04:51:11 Also, T2 programmers may want a system with more bells and whistles. 04:51:20 That's what T2 is about, bells, whistles, and *gongs*. 04:52:11 (Another reason I want a module system for small scheme is to relegate values and call-with-values to a separate module :) 04:52:32 I don't think either of them should be about bells, whistles, or gongs. They should be about specifying a language that is useful for a range of tasks from pedagogy to building robust software. 04:56:05 -!- jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has quit [] 04:56:57 Well, for pedagogy I think prefixes suffice, and are perhaps even overkill. But the full R6RS system, with selective inclusion, exclusion, and renaming of names at both import and export time, has its uses too. 05:03:40 pumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 05:04:26 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [Read error: 104 (Connection reset by peer)] 05:05:28 -!- pumpkin is now known as copumpkin 05:08:47 *jcowan* goes off to put his grandson to sleep, hopefully. 05:09:50 foof: if these popular implementations support either T1 or T2 or both (and we hope they will) in parallel with their native module systems, then there's no problem with code-sharing, except that some T1 modules may not work in T2. 05:10:16 -!- jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has quit ["Leaving"] 05:10:30 *Riastradh* blinks. 05:10:50 grandson :o don't hear that often on IRC 05:12:23 cornucopic [n=r00t@202.3.77.180] has joined #scheme 05:13:04 you do in this channel 05:13:10 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 05:13:36 No doubt you, copumpkin, are someone's grandson. 05:13:47 that may be true! 05:14:01 -!- MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has quit ["DOWNLOADING LATEST VERSION OF THE INTERNET"] 05:14:02 Probably not jcowan's, however. 05:14:03 in fact, I may be up to four people's grandson 05:14:33 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 05:15:14 sphex [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has joined #scheme 05:17:51 copumpkin: you may be your own grandpa 05:18:04 fix grandpa! 05:18:10 incubot: you may be your own grandpa 05:18:14 the simple fact that you were alive to go back in time, even if you were gonna kill your grandpa, means you couldn't, because if you did, you would have already done it... 05:19:51 incubot: you may already be a winner 05:19:54 restarting the argument with the girlfriend with the reason for the argument returned is a sure winner 05:25:57 -!- underspecified [n=eric@softbank220043052007.bbtec.net] has quit [] 05:32:03 -!- sphex_ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 05:39:33 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 05:39:35 hotblack23 [n=jh@p5B055526.dip.t-dialin.net] has joined #scheme 05:44:07 -!- hotblack23 [n=jh@p5B055526.dip.t-dialin.net] has quit [Client Quit] 06:00:55 sphex_ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has joined #scheme 06:01:56 -!- peter_12 [n=peter_12@S0106000f66bc42b9.vn.shawcable.net] has quit [] 06:03:09 -!- sphex [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has quit [Read error: 60 (Operation timed out)] 06:04:59 -!- luz [n=davids@189.122.90.116] has quit ["Client exiting"] 06:19:27 -!- kniu [n=kniu@CMU-284828.WV.CC.CMU.EDU] has quit [Read error: 110 (Connection timed out)] 06:25:56 kniu [n=kniu@ELMUNDO.RES.CMU.EDU] has joined #scheme 06:31:05 minion: memo for jcowan: After reviewing the R5RS and the R6RS, QUOTIENT and REMAINDER correspond with the TRUNCATE prefix, ? and MODULO correspond with the FLOOR prefix, DIV and MOD correspond with the EUCLIDEAN prefix, and I have never before seen DIV0 and MOD0. The CEILING prefix is not represented. 06:31:05 Remembered. I'll tell jcowan when he/she/it next speaks. 06:31:55 minion: memo for jcowan: Moreover, now that I have my own mnemonics for these division operations, I have rendered myself thoroughly unable to remember what the mnemonically void names QUOTIENT ? DIV DIV0 and REMAINDER MODULO MOD MOD0 mean. 06:31:55 Remembered. I'll tell jcowan when he/she/it next speaks. 06:50:08 -!- kilimanjaro [n=kilimanj@70.116.95.163] has quit [Remote closed the connection] 06:50:31 What's this about integer division prefixes? 06:53:00 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 06:54:19 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 06:54:56 ASau [n=user@83.69.240.52] has joined #scheme 07:03:00 jewel [n=jewel@dsl-242-129-207.telkomadsl.co.za] has joined #scheme 07:03:13 foof, I proposed that the integral division routines be named usefully: three suffixes, / to return the quotient and remainder, -QUOTIENT or -DIV to return the quotient, and -REMAINDER or -MOD to return the remainder. The five prefixes, for the five different division operator pairs, are FLOOR, CEILING, TRUNCATE, ROUND, and EUCLIDEAN. For each prefix f of the first four, the quotient is simply (f (/ dividend divisor)), and the 07:04:30 , and the <--- CUT 07:04:39 ...and the remainder is (- dividend (f (/ dividend divisor))). 07:04:58 Each division operator pair satisfies the following two relations: (1) dividend = divisor * quotient + remainder, (2) |remainder| < |divisor|, and (3) quotient is an integer. 07:05:03 they all confuse me too :) 07:05:24 The Euclidean division operator pair further satisfies the stronger property (2') 0 <= remainder < |divisor|. 07:06:10 That is, for the remainder, it chooses, from the equivalence class of the dividend modulo the divisor, the least nonnegative residue. 07:06:43 Or, for you non-mathematicians, it gives you a nonnegative remainder, always. 07:06:57 ok 07:07:17 This is a nice property, because it means, for instance, that the Euclidean remainder is always a valid index into a vector whose length is at least the divisor. 07:07:31 The same is not true for any of the other remainder operators. 07:08:37 were would you use all these procs? I can probably count on one hand the times I have even used 1 of them 07:08:54 Most people would probably want the Euclidean operator pair. 07:08:58 What is the definition of EUCLIDEAN? 07:09:57 *Jafet* throws a knuth at leppie 07:10:06 (EUCLIDEAN/ a n) gives the unique q and r such that q is an integer, a = n q + r, and 0 <= r < |n|. 07:10:45 -!- cornucopic [n=r00t@202.3.77.180] has quit ["so long.."] 07:11:43 If n > 0, q = floor (a / n); if n < 0, q = ceiling (a / n). 07:11:59 And r = a - n q, of course. 07:12:26 (The first line uniquely defined the operation by its properties; the second two lines gave you a procedure.) 07:14:18 Happy pi o'clock EDT, by the way! 07:18:36 9.14141414... ? :p 07:18:51 big pie, mmmm 07:19:07 Note, by the way, that all these operators work for any real dividends and divisors. If the dividend and divisor are both integers, of course, then so is the remainder. 07:20:14 underspecified [n=eric@softbank220043052007.bbtec.net] has joined #scheme 07:21:12 I appreciate the thoroughness of this approach, but I'm not convinced that we need to provide all of them. 07:21:56 Nor am I. More than which ones to omit, though, I'm curious what madness motivated the R6RS's DIV0 and MOD0. 07:21:57 I also don't think we need to expose the combined quotient+remainder versions, at least in the core library. 07:22:22 what are DIV0 and MOD0? 07:23:42 (MOD0 a n) gives a result in the interval [- |floor (n / 2)|, |floor (n / 2)|). 07:24:11 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 07:24:23 So if n is 2^m for some m, (MOD0 a n) gives a result in the interval [-2^(m - 1), 2^(m - 1)). 07:24:57 whatever for? 07:25:52 The definition of the FIXMUM*/2 procedure in the reference implementation of SRFI 77. 07:26:13 heehee, fixmum 07:26:26 (FIXNUM*/2 a b) = truncate ((a * b) / 2), I believe. 07:28:15 No, that's not right. 07:29:57 Correction: (FIXNUM*/2 a b) = a * b, if it is representable as a fixnum. 07:30:42 However, now I'm pretty confused by that, because the reference implementation for SRFI 77 does not use DIV0 or MOD0. 07:30:57 This is the only information I have about the utility of DIV0 and MOD0: . 07:33:38 sepult` [n=user@xdsl-87-78-128-235.netcologne.de] has joined #scheme 07:46:41 -!- sepult [n=user@xdsl-87-78-122-70.netcologne.de] has quit [No route to host] 07:54:48 sphex [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has joined #scheme 08:02:00 macr0 [n=vista@71.21.122.103] has joined #scheme 08:04:14 sphex__ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has joined #scheme 08:07:46 minion: memo for jcowan: Here is a more complete, but still brief, summary of division operators, nicely laid out with easy definitions and important properties exhibited by the different operations: . 08:07:46 Remembered. I'll tell jcowan when he/she/it next speaks. 08:10:13 (Ceiling quotient is watching your multiplicand.) 08:12:11 sphex___ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has joined #scheme 08:12:12 -!- macr0 [n=vista@71.21.122.103] has quit ["Leaving."] 08:12:28 -!- sphex_ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 08:20:26 -!- sphex [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 08:26:56 -!- r0bby_ is now known as r0bby 08:29:54 -!- sphex__ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 08:38:48 -!- jewel [n=jewel@dsl-242-129-207.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 08:39:22 vatsal [n=vatsal@219.64.75.200] has joined #scheme 08:39:43 -!- vatsal [n=vatsal@219.64.75.200] has quit [Client Quit] 08:41:32 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 08:47:13 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 09:04:41 ski_ [n=md9slj@remote1.student.chalmers.se] has joined #scheme 09:16:07 -!- foof [n=user@dn157-046.naist.jp] has quit [Read error: 110 (Connection timed out)] 09:19:15 foof [n=user@dn157-046.naist.jp] has joined #scheme 09:41:52 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 09:49:27 masm [n=masm@bl11-78-235.dsl.telepac.pt] has joined #scheme 10:03:24 Edico [n=Edico@unaffiliated/edico] has joined #scheme 10:08:19 -!- merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has quit [Read error: 110 (Connection timed out)] 10:22:20 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 10:26:29 ASau [n=user@83.69.240.52] has joined #scheme 10:27:34 elderK [n=zk@222-152-97-44.jetstream.xtra.co.nz] has joined #scheme 10:27:57 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 10:27:59 -!- tobetchi [n=tobetchi@p923e7d.sagant01.ap.so-net.ne.jp] has quit [Client Quit] 10:28:06 ASau [n=user@83.69.240.52] has joined #scheme 10:30:16 dzhus [n=sphinx@95-24-221-194.broadband.corbina.ru] has joined #scheme 10:38:52 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 10:42:17 xwl [n=user@122.70.40.57] has joined #scheme 10:56:19 perdix [n=perdix@sxemacs/devel/perdix] has joined #scheme 10:56:56 HG` [n=HG@xdslej062.osnanet.de] has joined #scheme 11:03:30 -!- xwl [n=user@122.70.40.57] has quit [Read error: 104 (Connection reset by peer)] 11:13:02 Sveklo [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 11:14:41 -!- hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has quit ["|_ e /\ \/ i |/| G"] 11:23:57 hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 11:41:31 csmerlin [n=smileymy@99-31-211-124.lightspeed.sntcca.sbcglobal.net] has joined #scheme 11:42:08 -!- ski_ [n=md9slj@remote1.student.chalmers.se] has quit ["Lost terminal"] 11:45:23 rudybot, (eval (expt 2 64)) 11:45:23 Edico: eh? Try "rudybot: help". 11:46:00 rudybot, eval (exp 2 64) 11:46:01 Edico: your sandbox is ready 11:46:01 Edico: error: exp: expects 1 argument, given 2: 2 64 11:46:21 rudybot, eval (exp 2) 11:46:21 Edico: ; Value: 7.38905609893065 11:46:40 rudybot, eval (exp 1) 11:46:40 Edico: ; Value: 2.718281828459045 11:47:12 what does exp? 11:47:19 Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 11:47:33 ski_ [n=md9slj@remote1.student.chalmers.se] has joined #scheme 11:48:39 (exp x) == e^x (as in the constant e) 11:48:47 you are looking for expt 11:50:09 yes 11:50:20 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 11:50:27 rudybot, eval (expt 2 3) 11:50:27 Edico: ; Value: 8 11:50:34 ASau [n=user@83.69.240.52] has joined #scheme 11:51:13 rudybot, eval (expt 2 64) 11:51:13 Edico: ; Value: 18446744073709551616 11:51:20 (eighteen quintillion four hundred fourty six quadrillion seven hundred fourty four trillion seventy three billion seven hundred nine million five hundred fifty one thousand six hundred sixteen) 11:52:28 tell me a big number and I will spell it right away for you 11:52:42 you got an interview? 11:52:57 no :) 11:53:39 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 11:53:41 #e1e300 11:53:42 I just finished the project spelling names of big numbers :) 11:54:02 ASau [n=user@83.69.240.52] has joined #scheme 11:54:22 *leppie* waits for the answer 11:54:41 what number is that 11:55:06 you must give me the digits 11:55:13 the exact number of (expt 10 300) 11:55:25 -!- Sveklo [n=sveklo@cs181131.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 11:55:35 1 and 300 zero's 11:55:43 the exact number of (exp 50) :) 11:56:40 it spells just integer numbers 11:57:07 minion: memo for jcowan: No, there is no vendor lock-in with PLT, because "PLT" != "Scheme", "PLT Scheme" != "Scheme", and that's true for any other Scheme implementation since Scheme is undefined enough compared to CL, to the point that a CLer will claim that *any* implementation is a lock-in. 11:57:07 Remembered. I'll tell jcowan when he/she/it next speaks. 11:57:09 -!- HG` [n=HG@xdslej062.osnanet.de] has quit [Client Quit] 11:57:12 leppie, that number is gigant 11:57:31 well it should just be 1 gazzilion :p 11:58:42 rudybot: eval (inexact->exact (exp 50)) 11:58:42 leppie: ; Value: 5184705528587097210880 12:00:34 xwl [n=user@122.70.40.57] has joined #scheme 12:03:08 (five sextillion one hundred eighty four quintillion seven hundred five quadrillion five hundred twenty eight trillion five hundred eighty seven billion ninety seven million two hundred ten thousand eight hundred eighty) 12:03:25 you need to work on the speed a little :p 12:03:49 I wasn't here :) 12:04:07 ok, tell me one now 12:04:54 4 12:05:06 :) 12:18:21 7^7 x 10^7777 12:24:09 -!- xwl [n=user@122.70.40.57] has left #scheme 12:25:21 eli: (voice (@ of "heath ledger's joker") "why so sophistical?") 12:29:25 Jafet, it spell numbers up to 35 digits 12:32:43 Fail 12:32:52 the maximum number spelled is 12:32:54 (ninety nine decillion nine hundred ninety nine nonillion nine hundred ninety nine octilion nine hundred ninety nine septillion nine hundred ninety nine sextillion nine hundred ninety nine quintillion nine hundred ninety nine quadrillion nine hundred ninety nine trillion nine hundred ninety nine billion nine hundred ninety nine million nine hundred ninety nine thousand nine hundred ninety nine) 12:34:15 I wrote a python script, based on the method by chongo, that could spell numbers of any size 12:34:38 I also wrote the inverse procedure, but it never worked properly 12:36:22 Jafet, it spells 7^7 x 10^7777? 12:38:32 No, but eight milliamilliaquingentrenonagintillion two hundred thirty-five milliamilliaquingendononagintillion four hundred thirty milliamilliaquingenunnonagintillion 12:39:00 Or, if you prefer, eight millia-millia-quingen-tre-nonagintillion two hundred and thirty-five millia-millia-quingen-do-nonagintillion four hundred and thirty millia-millia-quingen-un-nonagintillion 12:39:33 wow :) 12:40:49 If I know the words I can make it mine to spell such numbers 12:41:11 klutometis: huh? 12:42:22 your memo for jcowan 12:51:43 Dr_Betruger [n=chatzill@196.40.38.144] has joined #scheme 12:53:21 -!- Dr_Betruger [n=chatzill@196.40.38.144] has left #scheme 12:56:44 bombshelter13_ [n=bombshel@76-10-149-209.dsl.teksavvy.com] has joined #scheme 12:57:35 rstandy [n=rastandy@net-93-144-197-107.t2.dsl.vodafone.it] has joined #scheme 13:03:01 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 13:10:39 zeroish` [n=zeroish@135.207.174.50] has joined #scheme 13:18:37 mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #scheme 13:19:38 Daemmerung: Yeah, I got that klutometis question was related to my memo, but not much else. 13:39:01 sphex [n=nobody@74.56.185.239] has joined #scheme 13:42:22 -!- sphex___ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has quit [Read error: 60 (Operation timed out)] 13:43:04 Nshag [i=user@Mix-Orleans-106-3-25.w193-248.abo.wanadoo.fr] has joined #scheme 13:43:44 eli: every time you engage in painful elenchus over semantics, i'm inclined to narrate your lines in the voice of protagoras 13:44:04 one of the first sophists 13:44:37 given the absurdity of this exercise, though, i found it feat to mock you in the voice of heath ledger 13:45:13 in good faith, of course ;) 13:47:55 klutometis: mu. In any case, the underlying assumption that "vendor lock-in" in its meaning in the CL world simply does not exist in the Scheme world. The rest is fluff. 13:48:18 Sveklo [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 13:56:15 -!- Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 14:00:01 peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has joined #scheme 14:00:23 hotblack23 [n=jh@p5B055526.dip.t-dialin.net] has joined #scheme 14:10:20 mickn [n=mickn@69-196-173-128.dsl.teksavvy.com] has joined #scheme 14:16:43 jeapostrophe [n=jay@69.169.141.110.provo.static.broadweavenetworks.net] has joined #scheme 14:28:17 higepon646 [n=taro@FL1-122-135-46-206.tky.mesh.ad.jp] has joined #scheme 14:32:17 Narrenschiff [n=ritchie@xolotl.plus.com] has joined #scheme 14:38:21 long shot: Has anyone ever successfully run a Scheme script as a FastCGI script with Apache mod_fastcgi using MzScheme's FFI? 14:39:27 -!- peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has quit [] 14:40:25 peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has joined #scheme 14:41:31 jengle [n=jengle@69.0.90.45] has joined #scheme 14:43:10 kenjin [n=kenjin@163.152.180.245] has joined #scheme 14:43:28 -!- kenjin is now known as Guest19622 14:43:43 reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 14:45:53 .... 14:46:10 -!- Guest19622 is now known as kenjin2 14:52:27 peter_12: can you be more specific? Under what OS does your Apache run? What facilities are you attempting to access via FFI? 14:52:51 MrFahrenheit [n=RageOfTh@users-38-221.vinet.ba] has joined #scheme 14:52:54 Daemmerung: I'm on OS X and using libfcgi. 14:53:14 Daemmerung: I made a post to comp.lang.scheme with more details 14:53:15 http://groups.google.com/group/comp.lang.scheme/browse_frm/thread/01a4f0ca306d1b00# 14:53:16 -rudybot:#scheme- http://tinyurl.com/nkf3ph 14:53:42 Daemmerung: If you wouldn't mind taking a look I'd be grateful. 14:54:10 I feel like I'm so close but just something little is missing 14:55:10 That's going to take Apache savvy, of which I have none. Sorry. 14:56:26 vatsal [n=vatsal@219.64.66.20] has joined #scheme 14:56:45 I will opine that (apply fcgi-accept '()) seems a rather indirect way to say (fcgi-accept). 14:57:18 :) 14:58:27 Daemmerung: thanks for taking a look 14:58:41 I used apply just to match how the ffi examples work 14:59:29 peter_12: I'm not sure, but maybe it wants a content-length, or perhaps a HTTP status line ("200 OK")? 15:00:06 sjamaan: hmm. That isn't the way cgi/fastcgi is supposed to work 15:00:22 it is saying zero bytes are being returned to the server 15:00:30 so I don't think anything is getting there 15:00:38 (define (wu:write-headers) 15:00:38 (printf "Status: ~A ~A\r\n" (car (wu:response-code)) (cdr (wu:response-code))) 15:00:38 (for-each (lambda (pair) 15:00:38 (printf "~A: ~A\r\n" (car pair) (cdr pair))) 15:00:38 (wu:response-headers)) 15:00:40 (printf "\r\n") 15:00:43 ) 15:00:55 That's some code from web-unity, the fcgi backend 15:01:05 See that first line? I think that's what it wants you to send first 15:01:21 Ie, "Status: 200 OK\r\n" 15:02:13 sjamaan: no difference 15:02:16 :( 15:02:42 peter_12: search the plt-scheme list for a message "Faster CGI." Somebody's done this before. 15:02:45 Actually that is good news because fastcgi shouldn't require this. The script can write a status header but doesn't have to. 15:03:18 peter_12: Are you sure the current-output-port is mutated by fastcgi? 15:03:33 http://groups.google.com/group/plt-scheme/msg/175903c3828305be 15:03:40 sjamaan: it is supposed to be. The current-error-port is 15:03:44 Daemmerung: thanks 15:03:59 ah, right 15:04:27 MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has joined #scheme 15:06:35 -!- mickn [n=mickn@69-196-173-128.dsl.teksavvy.com] has left #scheme 15:06:44 -!- jengle [n=jengle@69.0.90.45] has quit ["Leaving"] 15:10:15 steele^ [i=steele@beegees.mtveurope.org] has joined #scheme 15:10:22 hi schemers! 15:12:10 I'm doing recursion with named let with one boolean argument, initial value #f . Now I have several if cases in there that call/recurse the function. How do I call the let without changing the argument value 15:12:46 or in other ways: How do I call a named let and keep the #t or #f value 15:13:29 choas [n=lars@91.13.193.93] has joined #scheme 15:13:45 There's no implicit way of doing that. Explicitly, just pass the value in the corresponding position in the recursive call. 15:14:52 hm.. I could just if the recursive call. if value #t than function #t and #f for #f. 15:15:14 That's a waste. Why not just put the value right there in the arguments? 15:15:21 That is, in (let loop ((x #t)) ...) just use (loop x). 15:15:21 masm, memo from eli: the text file that I used is not up in an organized way yet, but it will be soon -- mail me and I'll send you a snapshot. 15:15:27 kenpp [n=kenpp@84.92.70.37] has joined #scheme 15:15:39 Assuming `x' is either #t or #f, (if x (a #t) (a #f)) -> (a x) 15:16:26 masm: (that was re your defun09 query, btw.) 15:16:39 (Wouldn't it be nice if using `x' as the test value in an `if' expression implied that it was `boolean?'?) 15:18:26 Eli: thanks. I'm reading the documentation and code in PLT, and I think I'm starting to get it, but have not found an easy tutorial. That would be really great. 15:18:38 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 15:19:57 ah hey, of course. that was an easy solution. Thanks, masm, chandler. 15:20:37 I got kind of stuck on this in my mind, working on a complex script the whole day and night and you know how it is to think if you are tired :) 15:23:31 -!- pfo [n=pfo@chello084114049188.14.vie.surfer.at] has left #scheme 15:24:06 Can somebody please explain to me how the REPL involves phase-shifting in a way that an ordinary top-level program does not when only `syntax-rules' is allowed on the right side of a `define-syntax' or `let-syntax' form? 15:25:53 -!- MononcQc [n=parseido@modemcable062.225-20-96.mc.videotron.ca] has quit [Remote closed the connection] 15:28:30 -!- sepult` [n=user@xdsl-87-78-128-235.netcologne.de] has quit [Remote closed the connection] 15:28:47 sepult` [n=user@xdsl-87-78-128-235.netcologne.de] has joined #scheme 15:29:02 I'm smelling Elenchus again. 15:29:27 Does phase mean anything in a Schene with only syntax-rules? 15:29:39 Or even a Scheme, if you don't have a Schene. 15:31:33 Is that the cue for yet another naming contest? 15:31:37 -!- sepult` is now known as sepult 15:34:46 vatsal_ [n=vatsal@219.64.75.108] has joined #scheme 15:38:22 -!- higepon646 [n=taro@FL1-122-135-46-206.tky.mesh.ad.jp] has quit [Read error: 60 (Operation timed out)] 15:38:54 -!- vatsal [n=vatsal@219.64.66.20] has quit [Read error: 60 (Operation timed out)] 15:40:09 -!- elderK [n=zk@222-152-97-44.jetstream.xtra.co.nz] has quit [] 15:41:30 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 15:41:33 -!- steele^ [i=steele@beegees.mtveurope.org] has left #scheme 15:42:58 What's the benefit of using syntax-case instead of the intuitive define-macro? 15:43:48 -!- vatsal_ [n=vatsal@219.64.75.108] has quit [] 15:46:52 Hygiene. 15:48:12 but we have gensym? isn't it enough? ..I can't think of any name conflicts with define-macro with gensym 15:48:32 Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 15:51:18 Not just hygiene, but referential transparency. Or rather, control over both. 15:52:27 `Schene' could be Scheme, less a reversed lower-case `r'. The "Scheme Lite" of recent r6 list noise. 15:53:47 kenjin2: Gensym is *not* good enough. Consider the case of a local macro which references a lexically-bound variable. In Common Lisp, this would be something like (let ((x 1)) (macrolet ((m (a) `(+ x a))) ...)) 15:53:57 er, make that `(+ x ,a) 15:54:00 -!- etpace_ [n=etpace@etpace.eu] has left #scheme 15:54:16 Now, what happens if in the body of the macrolet I write (let ((x 2)) (m x)) ? 15:55:36 (Yes, `m' doesn't *need* to be a macro there; assume it's actually more complicated than that.) 15:55:45 rudybot: init r5rs 15:55:45 chandler: your r5rs sandbox is ready 15:56:20 rudybot: (let ((x 1)) (let-syntax ((m (syntax-rules () ((_ a) (+ x a)))) (let ((x 2)) (m x)))) 15:56:20 chandler: eh? Try "rudybot: help". 15:56:23 bother. 15:56:27 "eval" 15:56:32 rudybot: eval (let ((x 1)) (let-syntax ((m (syntax-rules () ((_ a) (+ x a)))) (let ((x 2)) (m x))))) 15:56:32 chandler: error: eval:1:13: let-syntax: bad syntax in: (let-syntax ((m (syntax-rules () ((_ a) (+ x a)))) (let ((x 2)) (m x))) (r5rs:body)) 15:56:41 -!- Sveklo [n=sveklo@cs181131.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 15:56:43 Bother bother. 15:56:48 rudybot: eval (let ((x 1)) (let-syntax ((m (syntax-rules () ((_ a) (+ x a))))) (let ((x 2)) (m x)))) 15:56:48 chandler: ; Value: 3 15:57:28 CL-USER> (let ((x 1)) (macrolet ((m (a) `(+ x ,a))) (let ((x 2)) (m x)))) 15:57:28 4 15:57:45 kenjin2: Does this help explain why hygiene is necessary? 16:01:17 offby1: It doesn't help that we have one bot which ignores me if I forget `eval' and another which spouts nonsense if I include it. 16:02:49 I just read the steering committee's position statement, and am amused. "When it comes to using Scheme, however, the Scheme community has rarely missed an opportunity to miss an opportunity." 16:03:57 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 16:07:46 chandler: I don't know what macrolet does... 16:08:36 clhs macrolet 16:08:36 http://www.lispworks.com/reference/HyperSpec/Body/s_flet_.htm 16:08:43 r5rs let-syntax 16:08:43 http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_idx_180 16:08:45 -rudybot:#scheme- http://tinyurl.com/6p7vn2 16:10:18 chandler: It seems to me like it's going to take some time to digest it....Can you give me some urls to refer to? 16:11:52 I thought we just did! 16:13:15 Oh....OK thank you...I'll bookmark them 16:14:05 Daemmerung: the information from that post you linked worked! Much thanks! 16:14:38 chandler: I've thought about inferring "eval" if everything else you say can be "read". Never got around to doing that, though 16:14:45 chandler: Anyway...you mean...it's beneficial to learn define-syntax thing right? 16:16:20 peter_12: Excellent. Cheers. 16:18:39 offby1: I'm not sure it's necessary, but sometimes the difference in syntax between rudybot and incubot will confuse me. 16:18:41 Hm. Mail.app doesn't really like my use of > to mean "REPL prompt". 16:19:06 The R6RS REPL semantics I just enumerated on r6rs-discuss seem so obvious to me that I'm forced to wonder why it isn't already the de-facto standard among implementations of the R6RS. What am I missing? 16:20:54 -!- emma [n=em@unaffiliated/emma] has quit [Read error: 110 (Connection timed out)] 16:28:02 -!- kniu [n=kniu@ELMUNDO.RES.CMU.EDU] has quit [Read error: 54 (Connection reset by peer)] 16:28:09 kniu [n=kniu@ELMUNDO.RES.CMU.EDU] has joined #scheme 16:34:30 -!- peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has quit [] 16:39:40 -!- Jafet [n=Jafet@unaffiliated/jafet] has quit [Connection timed out] 16:46:00 -!- kenjin2 [n=kenjin@163.152.180.245] has quit ["Leaving"] 16:48:23 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 16:54:33 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 16:57:01 ASau [n=user@83.69.240.52] has joined #scheme 17:06:35 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 17:07:03 ASau [n=user@83.69.240.52] has joined #scheme 17:10:15 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 17:10:45 ASau [n=user@83.69.240.52] has joined #scheme 17:14:33 -!- dzhus [n=sphinx@95-24-221-194.broadband.corbina.ru] has quit [Remote closed the connection] 17:15:15 peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has joined #scheme 17:16:34 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 17:17:48 ASau [n=user@83.69.240.52] has joined #scheme 17:21:01 -!- rstandy [n=rastandy@net-93-144-197-107.t2.dsl.vodafone.it] has quit [Remote closed the connection] 17:28:41 jonrafkind [n=jon@98.202.86.149] has joined #scheme 17:32:15 rcy [n=rcy@S010600179a26267b.wk.shawcable.net] has joined #scheme 17:32:59 kenjin [n=kenjin@163.152.180.245] has joined #scheme 17:33:22 -!- kenjin is now known as Guest82039 17:33:33 -!- Guest82039 is now known as kenjin2 17:35:30 Scheme macro system is hard to understand even though I have a little experience with common lisp macro. Is there any friendly tutorial? 17:38:11 TSPL, chapter 8. http://www.scheme.com/tspl4/syntax.html#./syntax:h0 17:41:35 Daemmerung: Thank you but, isn't "the syntax-case part" very hard? Is it only me? :) 17:42:47 Don't essay syntax-case until you first understand syntax-rules. 17:45:41 If you can't follow syntax-rules from its description in TSPL, try Joe Marshall's guide, http://www.xs4all.nl/~hipster/lib/scheme/gauche/define-syntax-primer.txt 17:45:56 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [] 17:46:35 kenjin2: It is not hard. While CL's defmacro has a familiar api (working with lists) syntax-case has an api with parts that you have never seen. But it is very easy. 17:46:36 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 17:46:46 dmoerner [n=dmr@89-151.res.pomona.edu] has joined #scheme 17:50:17 Joe Marshall's guide looks great. Thank you Daemmerung. 17:50:38 masm: I hope so. 17:58:06 I started with CL instead of Scheme because I was under the impression that Scheme macros are hard. If I remember correctly, it was because of something by Paul Graham that I read. I now believe that Scheme's macros are easier than CL's. It is all a matter of how much "familiar" is used in the definition of "easier". 17:58:09 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit ["A cow. A trampoline. Together they fight crime!"] 17:59:15 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 18:04:04 I personally found the description of syntax-rules in R5RS utterly incomprehensible. Fortunately there is TSPL. For further adventures in syntax-rules hackery, look for essays by Petrofsky or Kiselyov. 18:04:57 Syntax-case is easier, especially if you're already comfortable with defmacro. 18:06:55 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 18:08:17 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 18:09:17 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 18:12:46 -!- rcy [n=rcy@S010600179a26267b.wk.shawcable.net] has quit [Read error: 110 (Connection timed out)] 18:14:54 luz [n=davids@189.122.90.116] has joined #scheme 18:15:36 -!- kenjin2 [n=kenjin@163.152.180.245] has quit [Read error: 113 (No route to host)] 18:16:04 -!- bombshelter13_ [n=bombshel@76-10-149-209.dsl.teksavvy.com] has quit [Read error: 104 (Connection reset by peer)] 18:16:23 bombshelter13_ [n=bombshel@76-10-149-209.dsl.teksavvy.com] has joined #scheme 18:16:26 -!- reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote closed the connection] 18:34:12 -!- sepult [n=user@xdsl-87-78-128-235.netcologne.de] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 18:36:54 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 18:45:07 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 18:46:58 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 18:50:29 -!- peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has quit [Read error: 104 (Connection reset by peer)] 18:50:50 merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has joined #scheme 18:53:06 ASau [n=user@83.69.240.52] has joined #scheme 18:54:11 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 18:56:17 jeff_s_ [n=jeff@c-24-56-235-190.customer.broadstripe.net] has joined #scheme 18:58:10 glogic [n=glogic@97.76.48.98] has joined #scheme 19:00:50 -!- glogic [n=glogic@97.76.48.98] has left #scheme 19:04:12 -!- Daemmerung [n=goetter@1133sae.mazama.net] has quit ["Smoove out."] 19:04:14 sepult [n=user@xdsl-87-78-128-235.netcologne.de] has joined #scheme 19:06:02 The Petrofsky/Kiselyov stuff, as well as the latter parts of Joe Marshall's text are obscure tricks that have very little practical value. 19:09:59 _Pb [n=Pb@75.131.194.186] has joined #scheme 19:18:39 -!- Sveklo1 [n=sveklo@cs181131.pp.htv.fi] has quit [] 19:22:15 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 19:23:59 -!- merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has quit ["Leaving"] 19:25:39 Summermute [n=scott@c-68-34-67-216.hsd1.dc.comcast.net] has joined #scheme 19:30:49 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 19:31:14 -!- _Pb [n=Pb@75.131.194.186] has quit ["Leaving"] 19:32:35 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 19:33:44 -!- Summermute [n=scott@c-68-34-67-216.hsd1.dc.comcast.net] has quit [] 19:35:46 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 19:37:28 ASau [n=user@83.69.240.52] has joined #scheme 19:38:08 jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has joined #scheme 19:39:11 *jcowan* looks around carefully, so as not to be GCed by a raving fundamentalist Minimalist. 19:39:17 sepult` [n=user@xdsl-87-78-72-90.netcologne.de] has joined #scheme 19:50:24 Boo! 19:50:37 -!- sepult [n=user@xdsl-87-78-128-235.netcologne.de] has quit [Nick collision from services.] 19:50:56 -!- sepult` is now known as sepult 19:51:39 *jcowan* expresses his annoyance at minion for dumping #scheme-related messages onto #lisp instead. 19:51:43 minion: Bad minion! 19:51:44 watch out, you'll make krystof angry 19:52:09 It appears that my promise for a summary of module systems turned into a summary of modulo systems. 19:52:39 I didn't realize just what drastic consequences such typos could effect. 19:52:52 *jcowan* laughs. 19:54:06 krystof: Bad krystof! 19:56:53 peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has joined #scheme 19:57:36 in PLT the following returns 1 as expected (hash-ref #hash(("alpha" . 1)) "alpha") 19:57:38 why doesn't the following return 1 also? (hash-ref #hash(('alpha . 1)) 'alpha) 19:57:53 Because strings are not symbols. 19:58:09 sorry, forget that. 19:58:30 the documentation says the #hash() form returns an equal? based hash table 19:58:38 so I'd think the second one should work 19:59:15 peter_12: Perhaps #hash() is implicitly quoted? 19:59:18 Because #hash is quoted. 19:59:38 What sjamaan said. 20:00:05 That confuses me 20:00:09 why does that matter? 20:00:17 (hash-ref #hash((alpha . 1)) 'alpha) 20:00:21 This works. 20:00:28 See? 20:00:29 You're storing the list (quote alpha) as key 20:00:30 ahh 20:00:39 Try using hash-table->alist on it, and you will see 20:00:55 thanks masm and sjamaan 20:02:40 lisptast` [n=user@adsl-234-145-87.bgk.bellsouth.net] has joined #scheme 20:06:13 I keep thinking there has to be a good, Schemey way to allow extensible syntax that doesn't drag in the ugliness of CL's EVAL-WHEN to get the readtable modified at the correct time, but no matter how hard I try, I can't come up with one. 20:06:25 s/syntax/lexical syntax 20:06:30 -!- peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has quit [] 20:09:26 jcowan: PLOT? 20:09:54 mejja: What is this PLOT of which you speak? 20:09:56 (define-structure ... (for-syntax (open wacky-reader)) (file-with-reader the-wacky-reader "file.scm")) 20:10:08 ...heh. 20:10:15 jcowan: http://users.rcn.com/david-moon/PLOT/ 20:10:16 But of course that does nothing for run time. 20:10:37 Where does run-time enter into this? 20:11:59 When the user calls READ and expects extended datums to Just Work. 20:12:37 Why should there be a connection between the two? If you want to use the wacky reader at run-time, why not name it? 20:13:56 It has long been true that lexical syntax is the same whether at compile time or run time. I have to think more than twice before breaking that invariant. 20:15:20 If you read a program's source code with one reader, and write it with a different writer, should the semantics of the program change? 20:15:37 There is a bug in Chicken that the compiler's reader can't cope with bignum literals even if you make it (use numbers) at the top. 20:16:24 There is a bug in many Lisp systems whereby they fail to preserve floating-point literals, particularly when there are different representations of floating-point numbers. 20:16:36 (This is a design bug, though, not an implementation bug.) 20:19:55 Anybody here with any experience in reverse-polish lisp? 20:20:20 I was thinking I'd like to make scheme reverse-polish. 20:20:23 Only a trifling amount. 20:20:33 You mean true reverse Polish, or reverse Cambridge Polish? 20:20:51 There was a time when I regularly carried an HP-48G in my pocket, but no longer. 20:22:56 I still do, thanks to an emulator. 20:23:27 What's the diff. between true reverse 'olish and Cambridge 'olish? 20:26:22 Cambridge Polish is Polish with parentheses, and therefore able to handle an arbitrary number of arguments. 20:26:42 In real Polish you have to write + + 1 2 3 instead of (+ 1 2 3) 20:27:12 lisptast`: Why would you want to use a reverse Polish Scheme instead of a true stack language like Factor? 20:27:44 chandler pasted "expansion-time side effects" at http://paste.lisp.org/display/86665 20:27:54 rudybot: init http://paste.lisp.org/display/86665/raw 20:27:56 chandler: your "http://paste.lisp.org/display/86665/raw" sandbox is ready 20:28:05 rudybot: eval 'please-display-my-stdout-now 20:28:05 chandler: ; Value: please-display-my-stdout-now 20:28:06 chandler: ; stdout: "b\nd\na\nc\n" 20:28:07 saccade [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 20:28:19 Really good structured editing. 20:28:27 What does the R6RS state or imply about the ordering of effects in this program? 20:28:51 lisptast`: Was that an answer to my question? If so, I don't quite understand it. 20:29:04 I think reverse 'olish might take less thought when you get used to it because of how I write 'rograms. 20:29:04 lisptast`: You might be interested in stacktor: http://www.call-with-current-continuation.org/eggs/3/stacktor.html 20:29:46 chandler, I believe it requires that the implementation expand the macros first and execute the forms after. 20:29:58 lisptast`: Why are you avoiding the letter P? 20:30:07 sad0ur [n=sad0ur@psi.cz] has joined #scheme 20:30:22 jcowan: Maybe he's related to the plane'arium guy 20:30:33 chandler: Yeah, my bad. I want reverse-'olish notation and the syntactic flexibility, and the editing macros for lis' I've created in emacs. 20:30:34 jgracin [n=jgracin@vipnet114-83.mobile.CARNet.hr] has joined #scheme 20:30:41 Key's broken. 20:31:06 Ah. "The 'k' key on this ADM-3 is broken. Pkease fix." 20:31:14 -!- ve [n=a@94-193-95-252.zone7.bethere.co.uk] has quit [Read error: 110 (Connection timed out)] 20:31:36 I think reverse 'olish might actually be easier because of how i write 'rograms. 20:31:48 It would take a quick and subtle technician indeed to figure out what to do from that. 20:32:18 I usually start with a sim'le case, then loo' it, then 'ut it in a function, etc. etc.. 20:32:28 Do you all write 'rograms the same way? 20:34:04 Nah. I begin with defining all the constants I'll ever need, then all the variables I'll ever need, then all the labels I'll ever need .... 20:36:41 Riastradh: Interestingly, Chez 7.9.3 displays "a\nb\nc\nd\n". 20:37:53 Well, that's broken. 20:37:56 -!- saccade [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit ["This computer has gone to sleep"] 20:38:54 Do you happen to know where in the R6RS these semantics are defined? 20:39:57 Oh, I see. You didn't write a library declaration. 20:40:01 What happens then is totally random. 20:40:38 There is a statement in the R6RS that implies that any top-level program can be converted into a library by assigning new names to non-definition forms in the top-level program. 20:40:43 Quite. 20:41:08 Can someone explain to me, then, how the semantics of R6RS top-level programs differ from those of R5RS? 20:41:13 `Top-level program' outside a library body is a silly concept. 20:41:27 Doesn't that require an unmoved mover, Riastradh? 20:41:30 `Top level' should *mean* `top level of a library body'. 20:42:00 We need a carrier for the Eager Miracle (as opposed to Haskell's Lazy Miracle) 20:45:30 chandler: in chapter 10 20:45:35 I'm choking on the language in the R6RS libraries chapter again. 20:45:38 Oh, thanks. 20:45:38 right at the bottom 20:45:45 expansion process 20:45:47 Oh, no, that's the chapter I'm suffering through now. 20:46:01 it's very subtle difference 20:46:02 No, it isn't. I was actually in chapter 7. 20:46:37 -!- jgracin [n=jgracin@vipnet114-83.mobile.CARNet.hr] has quit [Remote closed the connection] 20:46:50 the expansion of expressions are deffered in a top-level 20:47:12 leppie: That actually seems to contradict Chez's behavior. `syntax-display' must be expanded to determine if it is a definition or not. 20:47:22 Or is there something yet I'm missing? 20:47:27 well chez is incorrect there :) 20:47:31 how did you run that? 20:48:44 Daemmerung [n=goetter@1133sae.mazama.net] has joined #scheme 20:49:12 $ petite expansion-side-effects.ss 20:49:34 yes, but you are making the mistake, not chez :p 20:49:40 you need to add --program 20:49:47 Oh! 20:49:53 else it just includes it expression for expression into the REPL 20:50:15 I hate that personally, so I dont even support that on IornScheme :) 20:50:39 you can do echo (include "yoursillyfile.ss") | ironscheme.console 20:50:57 actually that wont work 20:52:02 OK. This adds yet another level of annoyance to the variations between different R6RS implementations. 20:52:23 nah, most of the have that pesky program option 20:52:32 Ikarus has --r6rs-script 20:52:33 It's different on each one, as far as I can tell. 20:52:35 -!- MrFahrenheit [n=RageOfTh@users-38-221.vinet.ba] has quit [Read error: 104 (Connection reset by peer)] 20:52:38 Yes! That's my point. 20:52:47 larceny is -r6rs -program 20:52:52 MrFahrenheit [n=RageOfTh@users-120-50.vinet.ba] has joined #scheme 20:53:27 chandler: so write a shell script, or make an alias ;p 20:53:42 I would if I could 20:54:07 It's still an unnecessary bother caused by pointless incompatibility. 20:54:33 copilier options has never been one for compatibility 20:54:50 s/copilier/compiler 20:55:14 What is the justification for fixing these semantics so that an implementation is not allowed to expand and evaluate each form in sequence? 20:55:41 you have libraries for that 20:55:59 not sure why top level has to be different 20:56:35 -!- jeff_s_ [n=jeff@c-24-56-235-190.customer.broadstripe.net] has left #scheme 20:56:38 I dont even understand why a toplevel identifier cant shadow an import identifier (even when not being used) 20:56:50 I'd ask this question with regard to libraries, too. 20:59:21 (Honestly, I would've preferred if the R6RS clearly deliniated a purely-functional subset of the language, and *only* that subset was available at expand time. Expansion-time side effects are troublingly ugly.) 20:59:36 Er, "delineated" 21:01:39 compile time side effects is ugly 21:02:18 expand time can be useful (but that means expand time at runtime) 21:02:29 After sending email about using top-level semantics for the REPL, it occured to me that *this* was the major issue involved. Binding phase can be taken care of cleanly even if expansion and execution are interleaved. 21:08:37 leppie: In my opinion, the primary use for expand-time side effects is for tracing of syntax transformers. I'm inclined to think that there's a way to handle that particular case specifically. 21:10:10 Expand-time side effects are useful in computations at expand-time, even if they are not transmitted from one macro invocation or definition to another. 21:10:31 -!- Nshag [i=user@Mix-Orleans-106-3-25.w193-248.abo.wanadoo.fr] has quit [Remote closed the connection] 21:11:43 Prohibiting side effects in macro transformers would require some extra effort in the module system to distinguish effectful and effectless modules. 21:12:23 I don't recall ever actually needing to use side effects at expansion time, even within a single transformer. Can you provide a good example? 21:12:46 Implement a hairy compiler for a parser language, or a control flow graph language, in a macro. 21:13:17 Yes, I'd quite like to have the module system distinguish side-effectless modules as well. 21:13:48 I'm fairly certain that the purely-functional folks have been able to write hairy compilers without mutation. 21:14:29 Yes. But that line of argument is not about side effects in macro transformers -- that's about side effects in the language at all. 21:15:16 I think I've just been outed. 21:15:37 So Thing Two should standardize the command-line options accepted by conforming implementations, hey? 21:16:39 When circumstances allow, sure. 21:18:47 Make sure to propose it when you join WG2, chandler. 21:19:07 Is there actually a process for joining the WG[12]? 21:19:41 ve [n=a@94-193-95-252.zone7.bethere.co.uk] has joined #scheme 21:21:21 Not as yet. I have urged the SC to announce that would-be members should send in mini-resumes and choose from among people who do. 21:21:46 Is there a reasonable chance of a non-implementor being accepted to one of the working groups? 21:22:04 I have strong reason to believe so, yes. 21:22:16 I should hope so. 21:22:37 Well, then I'll be sure to submit my name for consideration when the process opens up. 21:22:57 *jcowan* is glad to hear it. "Someone with intelligence must be included in the party." --Peregrin Took 21:23:03 arcfide [n=arcfide@adsl-99-14-211-8.dsl.bltnin.sbcglobal.net] has joined #scheme 21:23:31 I'm not sure quite how to take that, jcowan. 21:23:48 jcowan: PLT's `#lang' is at its core a way "to get the readtable modified at the correct time", so that multiple modules can cooperate without the usual CL insanity. 21:23:56 It's meant to be complimentary to you and ironic towards Pippin. 21:24:16 eli: How is the set of #langs extended, then? 21:24:21 Well, in that case, thank you. 21:24:41 *jcowan* almost never insults anyone, except by accident. 21:25:02 Except for He Who Must Not Be Named But Has The Initials X L 21:25:19 A gentleman is one who never insults anyone by accident. --Oscar Wilde 21:25:33 jcowan: to be more exact, `#reader ' will require a reader function from the module, and then use it to read . 21:25:59 jcowan: So that reader can install its own readtable dynamically, and temporarily modify other read customization parameters. 21:26:05 Interesting. And what is the signature of said reader function; same as READ? 21:26:17 Probably READ-SYNTAX, not READ. 21:26:27 I have actually given more thought to becoming an implementor, but I fear that constraints on my time still forbid it for the near future. 21:26:30 jcowan: `#lang' is roughly similar to that, with a few more things for defining languages. 21:26:36 *chandler* shudders at the mention of `read-syntax' 21:27:13 Making it the same as READ would be effective, if not very modular. 21:27:28 jcowan: To be even more exact, the in the above should provide a binding for `read' and for `read-syntax', and one of them will be used depending on whether the original read was done as the first or the second. 21:28:09 chandler: Why shudder? Think about `read-syntax' as something that reads the actual syntax that is used by the code -- S-expressions with source information -- nothing more than that. 21:29:08 The idea of preserving source-location information in and of itself does not bother me (though I'm not convinced that it needs to be line-and-column instead of an index of nested expressions). 21:29:34 peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has joined #scheme 21:29:58 Hello everyone. 21:31:03 The particular representation might depend on whatever you (or your implementation) want to keep around -- including just plain S-expressions. In PLT, this includes source file (if available), line/column (if available), position in the stream, and span (in characters). 21:31:06 However, I don't see any reason why I need to provide two different interfaces to extend the syntax of the language. In the usual case, a custom read syntax will be extending or using the existing reader. The reader knows where the call to read syntax function begins, and any recursive calls can preserve information by associating it with the return value in a weak map. 21:31:57 Furthermore, even *if* a separate interface for reading syntax is necessary, I don't see why I shouldn't be abstracted from the details of the representation of the source information. 21:32:05 I still don't like the idea of interjecting evaluation into read-time. That's what's wrong with SRFI 10, to my mind. 21:32:52 I tried to solve this problem by having expand to a call on (funky-proc datum), but of course that doesn't work inside (quasi)quotes, nor with the runtime use of READ. 21:33:18 At that SRFI-10 is better than its CL equivalent, because it's safer. 21:33:24 chandler: re two interfaces -- that's mostly for historical reasons, and often the implementation of these readers have one function (eg, `read' uses `read-syntax' and converts the result to sexprs, or `read-syntax' uses `read' and adds #f as the extra information), 21:33:42 chandler: re the rest of what you said, I can't make sense of it. 21:34:22 (starting from "a custom read syntax will be extending or using the existing reader" which is already wrong.) 21:34:32 does PLT have anything that would work like (make-hash key value key value)? 21:34:38 What do you mean by `wrong' there? 21:35:06 I might be getting the terminology a bit wrong; let me provide a specific instantiation. 21:35:11 jcowan: missed your `#lang' question -- for these, you write these reader modules in a `lang' directory, which can contain other language-related functionality. 21:35:37 chandler: it's wrong, because a custom `#reader' doesn't have to extend or use the existing reader. 21:35:37 Suppose I wish to define a new read syntax: #?(foo), which should read as if it was (p '(foo)). 21:36:10 What I really want is lexical syntax-rules macros, I guess. 21:36:18 My contention is that the `read-syntax' version of this reader should be identical to the `read' version. 21:36:21 -!- ve [n=a@94-193-95-252.zone7.bethere.co.uk] has quit [Connection timed out] 21:36:22 chandler: the `#reader' thing uses *any* reader not just a readtable extension. 21:36:33 OK, yes, I'm specifically referring to extending the readtable. 21:36:44 These would have to be expressed in a way that the reader can understand. 21:37:00 chandler: In that case both your implementation of `read' and `read-syntax' would be trivial, 21:37:27 chandler: they would both look like (parameterize ([current-readtable my-readtable]) --read-or-read-syntax-here--) 21:37:27 Trivial, but not identical. 21:37:59 (That's not saying much, of course the whole idea is not to have an identical reader.) 21:38:19 Why *shouldn't* it be identical, though? 21:39:02 Because then you get an identical unextended reader. 21:39:16 OK. I misunderstood you. 21:39:37 perdix [n=perdix@sxemacs/devel/perdix] has joined #scheme 21:40:01 peter_12: there is a way to turn an alist into a hash table, but that creates (IIRC) an immutable hash table; for a mutable one, you write a loop to add the key/value pairs in. 21:40:02 eli: I learned several new thing from your text. Thank you, again. 21:40:15 eli thanks 21:40:42 peter_12: Also, if you're the one who posted the foreign related question on c.l.s, then asking it on the plt mailing list will be better. (But it looks like you managed that problem.) 21:40:52 eli: My understanding is that if I want to use #?(foo) in code, I need to provide a `read-syntax' version of my reader procedure. Is that not true? 21:41:10 offby2 [n=fircuser@m3a0536d0.tmodns.net] has joined #scheme 21:41:16 eli: Yes I did ask and I should have asked on the PLT list. Thanks and the ffi is really cool. 21:41:26 masm: If you have any feedback on the text, I'll be happy to hear it. Speicifically, the part in the end about unhygienic macros is not polished enough, IMO. 21:41:42 chandler: Yes. 21:42:04 -!- ski_ [n=md9slj@remote1.student.chalmers.se] has quit ["Lost terminal"] 21:42:26 chandler: and this version will be trivial in the sense that it will just wrap the "builtin" `read' and `read-syntax' functions with a `parameterize' that uses your readtable. 21:43:16 chandler: If you're looking for a way to specify *just* the parameterization changes which will modify both readers, then that's not part of the `#reader' API, but it is easy to do so. 21:44:07 chandler: Specifically, look at the documentation for `syntax/module-reader' module which is a helper for writing `#lang' readers, one thing that it allows you to do is write a "wrapper" around the reader functions. 21:44:49 chandler: But that's obviously limited *only* to readers that are parameterized versions of the usual functions, which is not going to work for all readers. 21:48:52 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit ["A cow. A trampoline. Together they fight crime!"] 21:49:13 -!- offby2 [n=fircuser@m3a0536d0.tmodns.net] has quit ["Powered by fIRC v0.2.12, the android IRC client."] 21:52:02 eli: For someone that has some, but not much, experience with Scheme, as me, everything is very understandable. Maybe you could give an example or two of how unhygienic macros are defined to better pinpoint the problems, like you do in the first part of the text. I find that examples that contain errors in them followed by examples with those problems fixed make me think and understand things better. 21:53:29 -!- tessier [n=treed@kernel-panic/sex-machines] has quit [Read error: 104 (Connection reset by peer)] 21:54:15 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 22:00:02 masm: Well, the thing is that the kind of problems you run into with naive unhygienic macros are very subtle -- even understanding the errors is a nightmare, since the worst cases is when you have nested scopes. But I'll try to expand more on that, and yes -- adding some exercise in there will be a good idea too. 22:00:34 leppie: So what are these SPIDER-CLAMS already? Sounds good to me, but Google isn't being helpful today. 22:02:41 merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has joined #scheme 22:02:49 -!- Edico [n=Edico@unaffiliated/edico] has quit ["Ex-Chat"] 22:04:55 Can someone running Windows (pause for ritual spit) do me the favor of downloading the free version of EdScheme and looking at the documentation so I can fill in which SRFIs it represents? 22:05:56 You must fill in a form at http://schemers.com/download.html . 22:06:16 incubot: Why does a Chicken? 22:06:20 If you're using chicken, there's generalised-case 22:07:41 TimMc: To get to the. 22:08:11 "Why does a chicken -- I don't know why." A. A. Milne, "Cottleston Pie" 22:08:42 jcowan: :-D 22:08:54 jcowan: Pretty sure that EdScheme predates every SRFI. 22:09:35 jcowan: I can put EdScheme on a Windows VM, if you'd like. 22:09:39 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 22:10:35 Naah, thanks. I'm not going to bother with something so secretive. Chez may be proprietary, but at least the documentation isn't. 22:14:24 -!- hotblack23 [n=jh@p5B055526.dip.t-dialin.net] has quit ["Leaving."] 22:17:10 *jcowan* removes EdScheme from S^5, and everyone from Kawa on downwards moves up a notch. 22:17:11 jcowan: Now you tell me. I tried to start a large VirtualBox image while Firefox was running with 50 tabs. And I only have 4 GB of RAM, so you can imagine how well that went. 22:17:45 *jcowan* points out that TimMc didn't even mention which VM runner he was going to require me to install. 22:21:36 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 22:21:43 ASau [n=user@83.69.240.52] has joined #scheme 22:30:06 jcowan: Oh, no, I was just firing up a local VM. :-) 22:31:02 eno__ [n=eno@adsl-70-137-171-124.dsl.snfc21.sbcglobal.net] has joined #scheme 22:31:11 -!- eno [n=eno@nslu2-linux/eno] has quit [Read error: 60 (Operation timed out)] 22:32:39 Confirmed. The last release of EdScheme, version 5.0, was made in 1997. In fairness, it was the DrScheme of its day (1991). 22:33:42 *jcowan* drops it down the memory hole, with thanks to TimMc and Daemmerung. 22:33:56 *Daemmerung* listens for the distant splash 22:34:23 Still falling. Indeed, the hole probably terminates somewhere in the South Pacific, considering I'm in North America. 22:34:43 43 minutes later: *SPLASH!* 22:36:56 *mejja* remembers macscheme+toolsmith ... 22:38:17 *Daemmerung* remembers being unable to afford MacScheme 22:39:23 *mejja* remembers being unable to afford a mac512 22:40:01 sphex_ [n=nobody@modemcable239.185-56-74.mc.videotron.ca] has joined #scheme 22:41:49 *Daemmerung* remembers the US$1000 upgrade to a "Fat Mac," ouchers 22:42:13 *Daemmerung* is pretty sure that he mooched that off of his sainted father 22:43:43 *jcowan* has never bought a computer. 22:43:56 (or had one bought to give to me, either) 22:44:10 Stolen? Self-built? Borrowed? 22:44:28 Work computers, mostly. In a few cases, computers discarded by the employer. 22:47:11 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 22:47:53 -!- sphex [n=nobody@74.56.185.239] has quit [Read error: 145 (Connection timed out)] 22:48:27 elderK [n=zk@222-152-97-44.jetstream.xtra.co.nz] has joined #scheme 22:49:56 Daemmerung: MacScheme+Toolsmith: $395, available since December 1986; 22:51:06 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Remote closed the connection] 22:52:42 _Pb [n=_Pb@75.131.194.186] has joined #scheme 22:52:48 -!- kilimanjaro [n=kilimanj@70.116.95.163] has quit ["Leaving"] 22:53:02 *peter_12* pretty darn excited about actually using Scheme for a real web project...finally! 22:53:09 I was an Aztec C user at the time. But I coveted MacScheme ever since I heard of it in late 1985. 22:53:25 OmniMancer [n=OmniManc@202.36.179.65] has joined #scheme 22:53:48 What's this, I heard someone other than me mention Chez! 22:54:10 a glitch in the matrix? 22:54:17 is there any somewhat readable and easily understandable tiny scheme interpreter? 22:54:23 mejja: Something's gone whacky, that's for sure. 22:54:26 Well, I'm trying to be comprehensive. 22:54:28 -!- choas [n=lars@91.13.193.93] has quit [Read error: 145 (Connection timed out)] 22:54:55 OmniMancer: foof's chibi-scheme is pretty clean (but also young) 22:54:56 jcowan: Actually, I'd say that most of Chez's internals of interest are pretty well documented, given that the usually result in some paper being published or talk being given on the feature. 22:54:57 And I once spent a whole week attending a boring training class -- that is, my body was attending, but *I* was using Petite Chez to develop my Joy-in-Scheme implementation. 22:55:27 arcfide: That too. I praise Chez by implication, while doing EdScheme down explicitly. 22:55:29 Daemmerung: http://www.mactech.com/articles/mactech/Vol.03/03.12/Multitasking/index.html 22:55:30 -rudybot:#scheme- http://tinyurl.com/lbnalh 22:55:52 So, I did something bad people. 22:56:26 "MacScheme+Toolsmith, on the other hand, does preemptive multitasking. MacScheme programs do not have to call GetNextEvent or WaitNextEvent, because there is a separate task that calls these traps" 22:56:28 I...implemented a macro to simulate the definition of procedures that accepts nested lambda formals. 22:56:54 Meaning that you can have such a 'proc' defined and do: (proc (values 1 2 3) 'a expr) and it works. 22:57:02 Forgive me, for I have sinned. 22:57:18 minion: advice for arcfide 22:57:18 arcfide: #11937: Because. 22:57:48 -!- peter_12 [n=peter_12@S0106001310475d12.vn.shawcable.net] has quit [] 22:57:54 arcfide: Absolution, to be valid, must be preceded by confession and contrition. 22:57:55 minion: Because there are certain folks on the lists that tried to call LET-VALUES ugly and by extension, deny any reason for multiple values existing in Scheme. 22:57:55 scheme is the root of all evil 22:58:15 hey arcfide 22:58:19 elderK: Hello. 22:58:25 *jcowan* thinks multiple values good, LET-VALUES good, CALL-WITH-VALUES annoying. 22:58:31 Of course, they were fine with function or function like application, so...yeah. 22:58:49 jcowan: I have actually found a few places where call-with-values turned out to be the clearest and most useful solution. 22:59:27 *mejja* mv is a huge mistake 22:59:40 arcfide: +1 22:59:49 mejja: +1 22:59:51 -!- OmniMancer [n=OmniManc@202.36.179.65] has left #scheme 22:59:53 arcfide: demo or die! 22:59:58 mejja: Yeah, but you don't count. And neither do you Daemmerung. 23:00:00 :-P 23:00:03 But we haven't had the confession yet. 23:00:11 Uh, one, two... five. I do too count! 23:00:11 arcfide: showthecodeorstfu! 23:00:13 jcowan: What confession!? 23:00:20 mejja: The use of call-with-values? 23:00:24 Let me see if I can find it.... 23:00:53 Forgive me, for I have sinned. arcfide: Absolution, to be valid, must be preceded by confession and contrition. 23:01:11 -!- lisptast` [n=user@adsl-234-145-87.bgk.bellsouth.net] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 23:01:14 jcowan: I thought I confessed to the sin right after that. 23:01:36 jcowan: multiple values make certain things slightly more complex, and they are not used that often. question is whether they pay their way. 23:02:19 You can always take the chibi-scheme approach, though it fucks up when you bring call/cc into the picture (as what does not). 23:03:01 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 23:03:22 jcowan: e.g., they are convenient for TRUNCATE, MOD, etc. but alternatively these could accept a closure to receive the values. can be optimized away, but also does not give the prettiest code 23:03:27 *jcowan* still doesn't get precisely what arcfide's offense was. 23:03:37 jcowan: what is the chibi scheme approach? 23:03:52 michaelw: list with a magic cookie in its car. 23:05:28 jcowan: Writing a macro that simulates the ability to pass multiple values to a single argument position in procedure 'application'. 23:05:54 mejja: I can't find the code now, it was for some project that has since been archived away deep and heavy where only lawyers and courts can get to it. 23:05:54 jcowan pasted "chibi-scheme multiple values" at http://paste.lisp.org/display/86677 23:06:32 Daemmerung: fair enough, but probably not good enough for fast math 23:06:40 mejja: Basically, I had a procedure that took the values I wanted from the producer of these values, and the producer was either a thunk or very close to it. CALL-WITH-VALUES was a on line entry, whereas the let-values or receive entry was at least two lines. 23:08:01 michaelw: I don't think that fast math is chibi's forte. 23:08:28 Quite. 23:08:39 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 23:10:19 *jcowan* 's secret plan is to fork (if necessary) chibi to make it a reference implementation of Thing One. 23:10:29 Eat that, mammyjammin' Minimalists. 23:10:43 *arcfide* minimizes jcowan. 23:11:27 *jcowan* stuffs his 27 stone / 170 kg into hyperspace in an attempt to be helpful 23:12:00 rudybot: eval (/ 170 27.0) 23:12:00 mejja: your sandbox is ready 23:12:01 mejja: ; Value: 6.296296296296297 23:12:34 *Daemmerung* makes a note not to pick any fights with jcowan 23:12:53 I'm a faller-on-top-of, not a fighter. 23:13:16 Still ain't sparring with you. 23:13:25 *jcowan* either. 23:14:03 Oh! I'l fight ya, or someone, who wants to fight!? 23:14:05 pfo_ [n=pfo@chello084114049188.14.vie.surfer.at] has joined #scheme 23:14:40 "I can lick every man in this platoon." (1 day later, after a computer glitch) "Me and Major Major can lick every man in this platoon." --Catch-22 23:16:11 The glitch, of course, promoted Pvt. Major M. Major to major overnight. 23:25:45 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Remote closed the connection] 23:27:47 karlw [n=karl@adsl-99-157-202-134.dsl.pltn13.sbcglobal.net] has joined #scheme 23:28:38 So, how is tail-recursive `map' supposed to work? 23:29:18 -!- Narrenschiff [n=ritchie@xolotl.plus.com] has quit [] 23:34:05 -!- _Pb [n=_Pb@75.131.194.186] has quit ["Leaving"] 23:38:34 -!- masm [n=masm@bl11-78-235.dsl.telepac.pt] has quit ["Leaving."] 23:44:47 ...without running in O(n^2) 23:51:17 -!- MrFahrenheit [n=RageOfTh@users-120-50.vinet.ba] has quit [Read error: 110 (Connection timed out)] 23:51:48 I don't follow, karlw... 23:52:16 map is tail recursive? 23:53:34 karlw: use an accumulator? (it's probably harder to come up with a O(n^2) solution than with a O(2n) solution) 23:53:59 accumulators are just an explicit stack 23:54:39 synx: Are they now? 23:54:47 synx: What about hashtable accumulators? 23:55:02 synx: Or tree accumulators? 23:55:32 arcfide: never heard of random access hash stacks? ;) 23:55:52 michaelw: Citation, or it doesn't exist. :-) 23:56:22 Well, I'm out of here. See you all later. 23:56:27 -!- arcfide [n=arcfide@adsl-99-14-211-8.dsl.bltnin.sbcglobal.net] has left #scheme 23:56:56 You're going to miss the citation for purely-function random-access read-write red-black hash stacks. Your loss!