00:03:00 ok...here's the junk not working for me: http://pastebin.com/d37ac8cfd 00:03:15 Ack. 00:03:17 lisppaste: url? 00:03:17 To use the lisppaste bot, visit http://paste.lisp.org/new/scheme and enter your paste. 00:03:18 supposed to take a list and spit out all the numbers with the same parity as the first one 00:03:20 decker: ^^ 00:03:29 and that spits it out here? 00:03:38 Yes, and it's a *lot* easier to read. 00:03:46 (if I don't say so myself) 00:04:16 decker pasted "my junk" at http://paste.lisp.org/display/86399 00:05:14 (= modulo (car (cdr list)) 2) 00:05:19 That's probably not what you want. 00:05:41 Did you mean to call the procedure `modulo' there? 00:05:45 and the parentheses are not balanced (there are two extra parentheses at the end) 00:06:03 Yes; if you move your mouse over the code (and you're not using IE), you should be able to see how the parens line up. 00:06:16 well, I typed the darn thing out because I don't know how to use emacs... 00:06:28 Are you using Emacs or Edwin? 00:06:39 Chicken says one of the IFs has too many args. 00:07:39 decker annotated #86399 "untitled" at http://paste.lisp.org/display/86399#1 00:08:07 chandler: endwin 00:09:40 decker: (cons x y) returns a list 00:09:52 and you call (same-parity (cons foo bar)) 00:10:03 but your function does not a expect a list 00:10:12 thantha, gah. right. thanks a bunch 00:10:45 what are you trying to do with this function ? 00:11:12 short answer? exercise 2.20 from sicp 00:11:20 chandler pasted "test lisppaste from edwin" at http://paste.lisp.org/display/86400 00:11:30 but like I said before, return a list of numbers that have the same parity 00:11:41 (partition even? lst) 00:11:44 decker: Use M-x lisppaste-buffer 00:11:52 i dont have sicp with me :P 00:11:57 decker: Select #scheme as the channel, and enter your username and a paste title 00:13:42 I should just buckle down and throw fedora on my mom's laptop 00:13:50 -!- thatha [n=thatha@unaffiliated/thatha] has quit ["run run !"] 00:14:01 but I'm set for now. thanks again thatha 00:14:06 oops. or not 00:14:42 blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 00:16:50 arthurmaciel and jcowan, the real reason why an unspecified order of evaluation is important is not that it enables compilers to generate better code (which it does), but that it enables programmers to express a *lack* of ordering dependencies between expressions, which otherwise would be impossible. This lack of ordering dependency enables programs to be more easily understood and transformed (e.g., by a programmer's refactorin 00:18:22 The IEEE Scheme standard is not as bad as a scanned PDF, but it is typographically most appalling. 00:19:59 chopped at "refactori" 00:20:17 ...(e.g., by a programmer's refactoring -- or by a compiler's optimization). 00:21:43 I don't know that I agree with you there. It doesn't *express* a lack of ordering dependencies, for there may indeed be ordering dependencies: it merely licenses Scheme implementations to ignore them. 00:21:56 It expresses the *intent* of a lack of ordering dependencies. 00:23:20 It is true that the program may behave differently depending on the order the implementation chooses, but the programmer expresses that he does not care about this; the behaviour following either order works. 00:25:33 It's a funny kind of "expression" that is expressed by merely choosing Scheme. 00:30:43 Some languages force programmers to choose a particular order when none is necessarily needed. 00:30:49 What do I express, for example, by speaking German? Presumably the intention to communicate with people who understand German, that's all. 00:30:52 Quite so. 00:31:02 I understand your point, I just think you have an odd way of putting it. 00:31:07 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Read error: 110 (Connection timed out)] 00:31:16 If Scheme implementations were required to detect and reject order dependencies, that would be another thing. 00:31:29 That would be an exceedingly silly requirement. 00:31:40 That wouldn't be sensible, even if it were practical to do. 00:31:43 -!- mrsolo [n=mrsolo@nat/yahoo/x-uadsudpoeuiekhqy] has quit ["Leaving"] 00:31:48 For example, I might not care in what order I build a list. 00:32:01 I might intend to sort it later, for instance. 00:32:30 But such a Scheme implementation would flag (map (lambda (x) (if (foo? x) (set! l (cons x l))) (quibble x)) other-list). 00:36:04 clog [n=nef@bespin.org] has joined #scheme 00:39:21 mongooseWA [n=mongoose@24.18.243.100] has joined #scheme 00:39:59 chandler pasted "!" at http://paste.lisp.org/display/86402 00:40:35 There *must* be something obvious I'm missing here. Why, after evaluating (a) at the top level, is `b' defined as syntax in MIT Scheme? 00:41:14 (And `c' for that matter; this is obviously an incomplete reduction.) 00:42:10 ha, good thing I did all that crazy junk with modulo when there's an odd? and even? built right in. 00:42:21 -!- mongooseWA [n=mongoose@24.18.243.100] has left #scheme 00:42:27 mongooseWA [n=mongoose@24.18.243.100] has joined #scheme 00:42:28 -!- mongooseWA [n=mongoose@24.18.243.100] has left #scheme 00:42:37 mongooseWA [n=mongoose@24.18.243.100] has joined #scheme 00:43:33 chandler, it's called a `bug', and due to the totally brain-damaged way that MIT Scheme treats DEFINE-SYNTAX. 00:44:01 Note, by the way, that if you merely *expand* (A), but do not *evaluate* (A), then B and C will not be bound. 00:44:12 !! 00:44:27 To see what's going on, evaluate (SYNTAX '(A) (NEAREST-REPL/ENVIRONMENT)). 00:44:31 (You can reconstruct the surprised noises from that pair of exclamation marks.) 00:44:36 Sorry, (PP (SYNTAX '(A) (NEAREST-REPL/ENVIRONMENT))). 00:45:31 (PRIMITIVE-OBJECT-SET-TYPE 50 ) turns a pair-like object into a special object called a `macro reference trap'. When these are found as the values of bindings in environments, the bindings are treated as syntactic bindings, rather than as variable bindings. 00:45:41 I believe I've run into this particular foible of MIT Scheme before, but became *very* confused when I observed identical behavior in Chicken (4.1.0). 00:47:13 -!- merus [n=merus@pal-175-116.itap.purdue.edu] has quit ["Leaving"] 00:47:15 ... and Gauche is confused by this as well; it throws a compile error when evaluating (a). 00:47:20 *** ERROR: Compile Error: symbol required, but got # 00:47:25 That's a bug in Gauche. 00:47:42 But if I recall correctly, Gauche's hygiene is totally broken anyway. 00:49:55 I'm not sure; I haven't really done much in the way of syntax-fu with it. 00:50:36 -!- mongooseWA [n=mongoose@24.18.243.100] has quit [] 00:50:40 I definitely remember running into this issue in MIT Scheme before, but I'm disappointed that Chicken would manage to recreate it. 00:54:29 Gauche's hygiene is indeed totally broken. 00:55:07 Apparently, so is Chicken's. :-( 00:55:52 zeroish [n=zeroish@135.207.174.50] has joined #scheme 00:56:46 -!- decker [n=chatzill@user-0c9h6li.cable.mindspring.com] has quit ["ChatZilla 0.9.85 [Firefox 3.5.2/20090729225027]"] 00:57:32 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 00:57:52 Chicken's is a little buggy. Gauche's is unusable for any nested macros. 00:58:30 -!- blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has quit [] 00:59:50 -!- defun [i=c625112c@gateway/web/freenode/x-msswzgofbxjuhwqb] has quit ["Page closed"] 01:01:49 QinGW [n=wangqing@203.86.89.226] has joined #scheme 01:03:33 chandler pasted "overused-example" at http://paste.lisp.org/display/86404 01:03:58 foof: I'm getting "ERROR: bad lambda syntax: (# (#))" when I try to load that in Chibi. 01:04:06 Glah. 01:04:20 Wha? 01:04:24 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 01:04:55 I see. 01:05:28 (The code is horrible; pay no attention to what it *actually* does.) 01:06:02 I must say that I haven't seen a particular deluge of overuse of this particular example. 01:06:13 The FizzBuzz thing? 01:06:31 Or any of the rest of that code, for that matter. 01:06:36 Or the fact that it's in trampolined style, and the trampoline syntax binds a literal? 01:06:54 The FizzBuzz thing is the overused example; the rest is just hygienic insertion. 01:07:02 FizzBuzz? 01:07:36 It's a programming test that was invented for use as an interview question to weed out prospective programmers who, despite the qualifications on their resume, just can't code. 01:07:42 I see. 01:08:10 Getting this code in response should earn an instant rejection for almost any interview. 01:10:03 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Connection reset by peer] 01:10:16 Hey, that's a bother. I just realized that C doesn't support recursive types, making portable trampolines rather tricky. 01:10:27 s/portable/strictly standard-conforming code implementing/1 01:10:43 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 01:10:51 you can have pointers to them 01:11:02 obviously, I guess :) 01:11:06 chandler: That error means it's expanding into (lambda (x)) with no body. 01:11:47 I don't believe any part of this should expand into that. 01:11:58 That's possible :) 01:12:04 Chibi's nested syntax and macro-defining macros are also broken, atm. 01:12:19 copumpkin, first attempt: typedef foo foo (void); Second attempt: typedef foo (*foo) (void); Third attempt: typedef foo * (*foo) (void); Fourth attempt: typedef foo *foo (void); 01:12:55 foof: Ah. OK. 01:13:03 oh, as type synonyms 01:13:10 copumpkin, fifth attempt: void * (*driver) (void) = &start; while ((driver = (void * (*) (void)) (*driver) ()) != 0); 01:13:10 It'll be fixed in 0.3. 01:13:43 Problem: (*driver) () has type void *, which might not fit a value of type void * (*) (void). 01:14:32 So the cast needs to happen before calling *driver, or before dereferencing driver. But that requires casting driver to have a recursive function pointer type, or casting *driver to have a recursive function type. 01:14:45 yeah, hmm 01:15:10 You can work around this, of course, by simply not using driver's return value -- declare driver at the top level, and set it instead of returning. 01:15:19 void (*driver) (void) = &start; 01:15:29 ... while (1) (*driver) (); ... 01:15:29 yeah, I think you either need that or an explicit cast 01:15:38 can't think of a nice way around it 01:15:38 What explicit cast? 01:15:39 Can't you return a pointer to a forward-referenced structure type, which has the function pointer as a member? 01:15:54 chandler, where do you store the structure? 01:16:14 On the heap. Recipient of the value must free() it. 01:16:19 ugh :) 01:16:21 Well, that's a pain! 01:16:25 A malloc and free per procedure call? 01:16:40 or in a global, with a pretty lock around it ;) 01:17:03 Or the trampoline takes a structure pointer as an argument and sets a function pointer inside; this is similar to your set-a-global approach, but thread-friendly. 01:17:10 chandler: (bind-1 ^ body) 01:17:17 chandler: that seems nicer 01:17:56 If that gets expanded as-is it will become (let ((^ body))) which will give the error Chibi raised. 01:18:14 It *can't* get expanded as-is. 01:18:26 It's a continuation; the grovel-escape form rewrites that to (bind-1 escape ^ body) 01:19:33 Right, so it's likely Chibi isn't properly defining grovel-escape. 01:20:08 Ah, this works: 01:20:15 typedef void (* driver_t (void)) (void); 01:20:22 void run (driver_t *driver) 01:20:36 { while (0 != (driver = ((driver_t *) ((*driver) ())))); } 01:21:06 that seems fairly elegant :) 01:21:12 as far as c goes, anyway 01:21:31 Aren't you casting a void* to a function pointer there, or is the C function type syntax just confusing me? 01:22:02 No, chandler. I'm casting a void (*) (void) to a driver_t *. 01:22:10 That is, a void (*) (void) to a void (* (void)) (void). 01:22:38 Since this is a cast from a function pointer to a function pointer, it's safe. 01:22:45 That gave me an aneurysm. 01:22:49 (provided that the actual functions were declared with the right types) 01:24:08 Riastradh pasted "C trampoline example" at http://paste.lisp.org/display/86406 01:24:52 Isn't C just beautiful? 01:25:04 (void) 01:26:42 It wasn't until I wrote a Scheme program to generate them that I understood the syntax of C type declarations. 01:27:41 Or, rather, it wasn't until then that I realized how badly I understood them. I still don't understand `typedef void (* driver_t (void)) (void);', but, by golly, it works. 01:27:52 I wrote a program to generate them, and I still can't *read* them. 01:30:44 OK. Until now, I wasn't aware of how broken many implementations were in the area of macro-defining macros. 01:30:47 Of the implementations I've tested, only PLT, Chez, and Scheme48 seem to not have issues. MIT Scheme and Chicken have hygiene issues, Chibi has the aforementioned bug, Gauche is broken, and Gambit is broken. 01:31:00 I'm assuming that any psyntax implementation will pass. 01:31:05 Basically, PLT Scheme and Scheme48 work, and nobody else does, except maybe Chez, but that is a new development in the past year or so. 01:31:12 Oh? 01:32:29 -!- thesnowdog [i=thesnowd@114.73.166.64] has quit [Read error: 60 (Operation timed out)] 01:34:18 Maybe more than a year, but for a long time Chez got phasing totally bogus. 01:34:35 Oh. I'm not very surprised by that. 01:34:50 I don't think I'm testing anything which is phase-sensitive. 01:35:43 I'm also convinced that PLT and Chez's behavior regarding rebinding of `syntax-rules' and `...' is nonconformant to the R5RS, which does not explicitly extend hygiene to the right side of `define-syntax' and `let-syntax' forms. 01:36:13 Congratulations, Scheme48! You're the last implementation standing. Please contact the R5RS Hygiene Awards Committee to receive your honors. 01:36:16 From what I can (try to) decipher, driver_t is a pointer to a function, taking no arguments, returning a pointer to a function that takes no arguments, and returns no value. :-P 01:37:28 No, cky. 01:37:32 driver_t is a function type, not a function pointer type. 01:37:54 Gnarly. 01:38:03 driver_t is a type of functions taking no arguments and returning pointers to functions taking no arguments and returning void. 01:38:55 In Haskelloid notation, type Driver = () -> (Pointer (() -> ())). 01:53:49 perdiy [n=perdix@sxemacs/devel/perdix] has joined #scheme 01:54:07 -!- Ringo48 [n=Ringo48@97-122-156-185.hlrn.qwest.net] has quit ["Leaving"] 01:54:38 -!- luz [n=davids@189.122.90.116] has quit [Read error: 110 (Connection timed out)] 02:06:48 ski_ [n=md9slj@remote1.student.chalmers.se] has joined #scheme 02:09:02 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit [Read error: 110 (Connection timed out)] 02:09:02 -!- perdiy is now known as perdix 02:09:08 chandler: I just fixed that bug in Chibi, your example works. 02:09:36 (It's not a good fix, I'll do it cleanly later.) 02:13:40 foof: Did you commit it? 02:13:42 -!- Nshag [i=user@Mix-Orleans-106-2-201.w193-248.abo.wanadoo.fr] has quit [Read error: 110 (Connection timed out)] 02:14:01 "hg pull" is telling me "no changes found", but my ignorance of all things mercurial might be leading me astray. 02:14:23 Not committed. 02:14:34 OK. 02:14:38 In the middle of a bunch of other changes actually... 02:16:24 This exercise leads me to believe that the quality of an implementation's conformance to the RnRS(es) it purports to conform to ought to be a reasonable way of sorting implementations, if such an ordering is actually desirable. 02:17:55 brweber2 [n=brweber2@ip68-100-65-167.dc.dc.cox.net] has joined #scheme 02:24:57 -!- Axioplase_ is now known as Axioplase 02:29:23 I stlii don't get why people get *so* upset when it comes to comparing implementations. There's nothing wrong with that 02:30:48 Can someone remind me why there is a sudden craze with comparing implementations? 02:31:14 maybe people want to get onto the shootout? 02:31:45 Joe Marshall publicly made a list ranking PLT head and shoulders above all other implementations, and there was much wailing and gnashing of teeth. 02:33:59 Though I think it's actually quite likely that he just used the internal pagerank value (being a google employee), which would explain a lot of the results. 02:38:12 "Tier 1 is the powerhouse implementations. Of course PLT scheme is the 02:38:13 most popular scheme. I was surprised to find that Gauche is tremendously 02:38:13 popular. I've heard of it, but never used it. I was also surprised, 02:38:13 but pleased to see MIT Scheme is still popular enough to stand out from the crowd." 02:38:36 He "was surprised" which means he didn't actual do the ranking himself. 02:38:52 Riastradh: they have to be compared so they can be properly seeded, and battle each other to eventually reach the French Open 02:39:07 PLT does have the largest community. 02:39:43 Gauche was the first Japanese Scheme, so regardless of quality it will get a high ranking among Japanese users. 02:40:29 MIT Scheme is one of the oldest active implementations, and is usually the one used by SICP, so of course it has a high rank. 02:40:48 The newer implementations all rank near the bottom. 02:41:27 I'm not exactly certain what the goal of ranking implementations was, though. 02:42:25 The idea of actually asking people what they use seems to have beem dismissed, though it seems logical to me. 02:43:43 ... "beem"? 02:43:48 Both metrics (google stats vs. manual voting) have the obvious flaw that the most popular implementations aren't necessarily the best. 02:44:07 ... otherwise we'd all be programming in Java :) 02:44:33 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 02:46:03 Well, that gets back to the question of what the point of this ranking is. 02:46:37 If it's just to cull sufficiently unused implementations from the list, I think either metric might work. 02:48:10 -!- rdd [n=user@c83-250-159-12.bredband.comhem.se] has quit [Read error: 113 (No route to host)] 02:48:36 -!- heat [n=dima@8.21.172.227] has quit [Read error: 104 (Connection reset by peer)] 02:48:41 I'm almost positive that the horse-by-committee approach will once again fail to produce a well-designed specification, and that it might be best to promulgate several incompatible specifications to determine which will gather the strongest consensus. 02:50:18 heat [n=dima@8.21.172.227] has joined #scheme 02:53:12 tjafk2 [n=timj@e176202020.adsl.alicedsl.de] has joined #scheme 02:55:37 I believe that Chicken believes that all define-syntax calls are effectively top-level. 02:56:19 So were all of the ones in chandler's example, jcowan -- but not all of them bound readable names. 02:58:28 *jcowan* nods. 02:58:34 chandler: obviously the point of the ranking is so that we know where they are ranked! 02:59:07 foof: Since no metric is perfect, I suggested a weighted feedback-aware one, which might take several rounds until a fixed-point is reached. 02:59:11 I doubt that jmarshall used internal Google data. The Freshmeat data would suffice. 02:59:22 How can you have a fantasy Scheme league without rankings?! 02:59:30 we're in deep trouble search engine wise if Google employees think PageRank is a valid measure of "goodness" 02:59:35 The League of Extraordinary Schemes? 02:59:39 ^^ 03:00:09 jcowan, the Freshmeat data were separate from his magical mystery material, I believe. 03:00:47 jcowan: Well, not internal data, probably just the # of hits. 03:04:34 Ah. 03:04:37 QinGW1 [n=wangqing@203.86.89.226] has joined #scheme 03:04:52 I myself have only a secondary interest in ranking implementations; I'm interested in ranking SRFIs. 03:05:43 The simplest rank of a SRFI is how many implementations implement it, but I'm willing to say that what PLT or Chicken implements is in some sense more important than what Sizzle implements. 03:05:47 The fat SRFI always gets picked last. 03:05:56 I resemble that remark 03:07:15 or to put it better, the fact that PLT does or doesn't implement a SRFI carries more weight, to some degree, than the fact that SigScheme does or doesn't implement it. 03:07:45 luz [n=davids@189.122.90.116] has joined #scheme 03:09:31 -!- tjafk1 [n=timj@e176214196.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 03:09:34 On the other hand, some implementations just implement every SRFI they can, regardless of whether they use or encourage that SRFI. 03:09:42 Implementation means nothing. 03:09:54 Actually _using_ the SRFI in a project counts for something. 03:10:19 *jcowan* shrugs. 03:10:23 If I had that data, I'd use it. 03:10:27 So a better way to rank SRFIs is to count the number of times it's required/imported/used in all publicly available Scheme projects. 03:10:41 The data is out there. 03:10:55 ... you just need some scripting to get at it. 03:11:23 One problem is that there is no standard way to indicate that a particular SRFI is in use. 03:12:15 -!- rcy [n=rcy@d154-20-140-113.bchsia.telus.net] has quit [Remote closed the connection] 03:12:23 Or there is, but it's a rather high-numbered SRFI with few implementations. 03:12:53 To be honest, I think most SRFIs are either self-justifying or not, and those that are not can generally be ignored. 03:13:16 Right, you need to detect (or know from the source you got it from) the implementation of the scheme code, and have separate utilities for extracting the dependencies. 03:13:52 For example, SRFI 33 is thoroughly self-justifying and pretty obviously the right thing. By contrast, SRFI 60 acknowledges in its rationale that it has completely failed to identify the real issue, and can be safely ignored. 03:17:51 rcy [n=rcy@d154-20-140-113.bchsia.telus.net] has joined #scheme 03:18:48 If SRFI 33 is so self-justifying, why was it withdrawn? 03:19:18 Olin withdrew from the scheme community. 03:19:50 Really? 03:19:55 Temporarily, I take it. 03:20:15 For several years he was pretty silent on the non-academic side of Scheme. 03:20:27 *jcowan* nods. 03:20:28 (and merely quiet on the academic side) 03:21:05 He withdrew both of his SRFIs, stopped working on SCSH, and hasn't since sent a single mail to c.l.s or any of the public Scheme lists. 03:21:24 -!- QinGW [n=wangqing@203.86.89.226] has quit [Connection timed out] 03:21:57 I see. 03:22:27 QinGW [n=wangqing@203.86.89.226] has joined #scheme 03:23:53 I wish to probe this notion of being self-justifying. For example, of SRFIs 0-9, which are self-justifying according to this notion? 03:24:10 (excluding 3, which is withdrawn, and 7, which defines a non-Scheme language) 03:24:39 6, 8, and 9 03:24:48 Zero controversy and important. 03:25:10 Well, 6 has zero controversy given the R5RS's I/O. 03:25:21 1 is pretty damned useful and very, very highly used/supported. 03:25:27 I was going to say, what of 0 and 1? 03:26:37 You could make a better list library, or factor it better, but 1 is at least good enough, and you really need a complete list library. 03:28:31 Granted. But does that mean its procedures should be incorporated into a Scheme standard? Tentatively I would say no. 03:28:34 -!- Mr_Awesome_ [n=eric@c-98-212-143-245.hsd1.il.comcast.net] has quit [Read error: 104 (Connection reset by peer)] 03:28:54 Whereas 0, 6, 8, and 9 do seem like candidates for that. 03:28:56 SRFI 0 is generally an indication of a weakness in the module system. I have mixed feelings about SRFI 1: it's useful, to be sure, but it encourages what is almost always the wrong data structure. 03:29:07 I would say that the trivially incompatible changes made by R6RS were definitely a mistake. 03:29:13 Quite, foof. 03:29:17 I agree. 03:32:32 To be honest I'd like to experiment with weight-balanced binary trees as the basic default data structure, both for sequences and for associations. However, that would, of course, be inappropriate for the next Scheme report. 03:34:13 I take it that from the next decad, the self-justifying ones are 11 and 16, and perhaps 17? 03:34:22 But not 13, 14, 18, or 19. 03:34:49 SRFI 11, yes, although I'm a little surprised to see that it has no LETREC-VALUES. 03:35:08 SRFI 16 is probably a good thing. I haven't thought very much about it. 03:35:10 16 is quite rarely useful. 03:35:22 More often you want some sort of match-lambda. 03:35:45 17 is very controversial. 03:35:47 SRFI 16 is more of an implementation technique for various forms of optional parameters, but it is less controversial than any formulation of optional parameters. 03:36:00 What makes 17 controversial? 03:36:10 *jcowan* taps the rubber tree of implicit knowledge here. 03:36:32 There are those among us who find (SET! (CAR X) ...) to be disingenuous, for (CAR X) returns no location into which SET! stores a value. 03:36:44 -!- QinGW1 [n=wangqing@203.86.89.226] has quit [Connection timed out] 03:37:21 The (SET! (SETTER ...) ...) mechanism is rather questionable. 03:37:38 It's also just less flexible than (setter loc value) where setter can be any function. 03:37:40 -!- QinGW [n=wangqing@203.86.89.226] has quit [Read error: 104 (Connection reset by peer)] 03:38:12 Well, I see that it fails if you have more than one natural setter, yes. 03:38:39 QinGW [n=wangqing@203.86.89.226] has joined #scheme 03:39:08 Not that I'm personally opposed to it. 03:39:18 Next, SRFI 27 is approximately self-justifying, but RANDOM-SOURCE-PSEUDO-RANDOMIZE! is a mistake that implies a particular implementation, and I am not keen on some of the naming or on the use of global variables to store random sources. 03:39:54 Certainly, (RANDOM-INTEGER ) and (RANDOM-REAL) are the right things. 03:40:33 Yes. 03:40:39 -!- brweber2 [n=brweber2@ip68-100-65-167.dc.dc.cox.net] has quit [] 03:40:53 I'm aware that you think 23 is a fundamental mistake, but in systems that do not support general conditions it seems too valuable to give up. 03:41:05 I think SRFI 23 is a fundamental mistake? 03:41:19 I guess that would explain why I use it all the time...hmm, wait. 03:41:52 SRFI 26 is pretty handy, and innocuous. 03:41:59 The next non-controversial, self-justifying SRFI is 62. 03:42:07 -!- ASau [n=user@83.69.240.52] has quit [Remote closed the connection] 03:42:14 ASau [n=user@83.69.240.52] has joined #scheme 03:42:24 26 need be nothing but a library. To include it in any basic report would be aesthetically offensive! 03:42:25 Likewise 31. 03:42:37 I agree about 26, and I don't find it self-justifying at all. 03:42:43 Likewise 31, except that it's not as aesthetically offensive. 03:43:05 39? 03:43:16 patmaddox [n=patmaddo@14.sub-75-214-232.myvzw.com] has joined #scheme 03:43:54 39 strikes me as valuable, even if it is intentionally woefully underspecified. 03:43:56 That _can_ be a library but often wants more efficient implementation. 03:44:13 And since most implementations have threads, and decisions must be made about how it interacts with threads -- yes. 03:44:58 -!- Lemonator is now known as kniu 03:45:09 Riastradh: I had misremembered your objection to a condition class called "error" as an objection to a procedure called "error", I think. 03:45:14 jcowan, more than underspecified, it is specified in an unpleasant way. Also, I really dislike the word `parameter' here -- not just because I prefer other words aesthetically, but because I have known it to cause confusion. 03:45:23 jcowan, I objected to a condition class called `error'? 03:45:37 I thought so, but perhaps I have a collision in my SRFI-69. 03:45:39 jcowan, I think you have it backwards: I was baffled by how the vogue term for `error' had become the peculiar construction `assertion violation'. 03:45:57 (this is interesting, but I gotta run) 03:46:04 -!- foof [n=user@dn157-046.naist.jp] has quit ["ERC Version 5.2 (IRC client for Emacs)"] 03:46:05 Thanks for your help, foof. 03:46:36 I believe it was on the grounds that calling a condition an error prejudices people about how to handle it, whereas conditions should simply describe what is the case, not what to do with it. 03:46:54 -!- MichaelRaskin [n=MichaelR@195.91.224.225] has quit [Remote closed the connection] 03:47:29 s/with it/about it/ 03:48:38 -!- kilimanjaro [n=kilimanj@70.116.95.163] has quit [Remote closed the connection] 03:49:05 In any case, what about SRFI-45, which we discussed earlier? Not self-justifying enough? 03:49:08 Hmm. Certainly not all conditions are errors. 03:49:16 Oh, yes, sorry, I missed that one. 03:50:03 (And don't forget SRFIs 54 or 86!) 03:50:56 I note that we overlooked SRFI 30, which surely goes with SRFI 62. 03:51:49 I don't care much for block comments. Editors support them badly, and they add very little over M-;. 03:52:32 Indeed. But what I meant is that to call a condition class "error" or "xxx-error" predisposes the user to always treat it as non-resumable; it is better to have a class "divide-by-zero" instead of "arithmetic-error". 03:52:46 Sure. 03:52:54 But doing that sensibly requires a condition system, which is highly controversial. 03:53:01 Quite so. 03:53:01 That is, a condition classification system. 03:53:39 Now hopefully my remark makes sense: I had confused the objection to *conditions* named "error" with an objection to a *procedure* named "error", and hence thought in error that you were opposed to 23. 03:55:00 -!- QinGW [n=wangqing@203.86.89.226] has quit [Read error: 131 (Connection reset by peer)] 03:55:10 I think that 69 and 98 are the only other candidates; 98 is rarely implemented, but it's very new. 03:55:18 QinGW1 [n=wangqing@203.86.89.226] has joined #scheme 03:55:18 SRFI 69 is very poorly designed. 03:55:53 boringwall [n=boringwa@c-68-54-140-150.hsd1.pa.comcast.net] has joined #scheme 03:56:05 True, but it's not clear that invention from scratch would do better. I have never seen a satisfying map interface. 03:56:24 The naming in SRFI 98 is reasonable. The discussion of decoding the bytes of environment variables is a little random. 03:56:37 I have seen *more* satisfying map interfaces. 03:59:30 SRFI-44, otoh, is seriously *less* satisfying. As is Java's. 04:00:25 Yes, indeed. 04:01:39 I suppose that the matter of hashtables must be swept under the rug. Again. 04:01:41 I think that, e.g., is better along some dimensions. It departs somewhat from the approach of distinguishing associations from non-associative collections, but there are substantial elements of it that are independent of that departure. 04:01:43 QinGW [n=wangqing@203.86.89.226] has joined #scheme 04:02:10 Despite CLtL's very sensible rationale for including ht's in the language: if people try to roll their own, they *will* get it wrong. 04:03:07 OK. Let's do it right, then -- not like SRFI 69. 04:05:02 CLtL is speaking of implementation, not interface. 04:05:20 Chicken's SRFI-69 is soooooo slow, you're better off with a-lists 90% of the time. 04:05:47 How did they accomplish that? 04:07:20 Got me. 04:08:01 I merely report what I have heard. (A pity the subjunctive mood is so nearly dead in English.) 04:11:45 It is absolutely not dead. The following two sentences have a very clear distinction in meaning: `Who suggested that the subjunctive mood is dead?' `Who suggested that the subjunctive mood be dead?' 04:11:52 thesnowdog [i=thesnowd@122.110.51.146] has joined #scheme 04:17:30 -!- QinGW1 [n=wangqing@203.86.89.226] has quit [Connection timed out] 04:18:49 Summermute [n=scott@68.55.207.173] has joined #scheme 04:21:47 -!- dmoerner [n=dmr@89-151.res.pomona.edu] has quit [Read error: 104 (Connection reset by peer)] 04:23:32 sepult [n=user@xdsl-87-78-26-190.netcologne.de] has joined #scheme 04:23:37 True, but that's the only case for what in German is called subjunctive I. 04:24:23 And outside North America, it is not even grammatical any more; all other anglophones use "should be" or "would be" rather than simple "be". 04:26:03 BTW, where do you rank (rnrs hashtables (6)) on the scale of crappiness? 04:26:14 `Should be' and `would be' both induce different meanings from `be' in that context. 04:26:47 QinGW1 [n=wangqing@203.86.89.226] has joined #scheme 04:27:23 Just as bad as SRFI 69, and kind of random to boot (e.g., HASHTABLE-ENTRIES). 04:27:47 Also, `hashtable' is not an English word of which I am aware. 04:28:10 `Hashtable' looks nearly as silly as GETHASH and MAPHASH. 04:28:12 I kinda like Python's "Dict" terminology 04:28:29 Underlying implementation could RB trees, for example 04:28:38 *jcowan* nods. 04:28:38 That's different, Summermute. 04:28:47 These are emphatically hash tables, not any other data structure. 04:28:56 Gotcha 04:29:17 If the interface insists on being maps, by the way, I'd rather use the conciser term `hash map'. 04:29:22 The two remaining topics, I believe, are multi-dimensional arrays (no central solution) and homogeneous arrays/octet vectors/blobs (ditto) 04:29:25 (That's shorter even than the silly word `hashtable'.) 04:29:50 s/central/dominant 04:30:02 Octet vectors are a no-controversy no-brainer. Beyond that, multidimensional arrays are no-brainers to have, but they will always incur controversy. 04:30:12 -!- annodomini [n=lambda@wikipedia/lambda] has quit [Client Quit] 04:30:26 Excuse me, I misspoke. 04:31:01 Octet vectors are a no-brainer. I don't think anyone should object to MAKE-OCTET-VECTOR, OCTET-VECTOR?, OCTET-VECTOR-{LENGTH,REF,SET!}, but I don't know whether anyone would. 04:31:17 MichaelRaskin [n=MichaelR@213.171.48.239] has joined #scheme 04:31:25 *jcowan* nods. 04:31:32 yup 04:32:02 Blobs add to octet vectors the ability to retrieve and set the contents by interpreting them as common machine data types (intN, uintN, floatN) 04:32:03 Given that they've variously been called u8vectors, byte-vectors, bytevectors (another silly lexicographical construction), and blobs, maybe someone is likely to object. 04:32:25 The history of English is that we move from base ball to base-ball to baseball. 04:32:40 Doubtless "baseball" would have looked very silly in 1867. 04:33:10 hi, I was reading R5RS (I'm new with scheme), and it says vector constants must be quoted. What am I missing? unquoted constants seem to work exactly the same way.. 04:33:11 `Baseball' still looks silly. 04:33:21 laynor_, some implementations accept unquoted vector constants. 04:33:30 But it's not standard. 04:33:35 variable interpretation of the binary elements of the bytes is key, whatever the terminology 04:33:51 Summermute: I'm inclined to agree 04:34:00 QinGW2 [n=wangqing@203.86.89.226] has joined #scheme 04:34:12 Riastradh: got it :) 04:34:37 What do you mean by `variable interpretation of the binary elements of the bytes'? 04:34:40 So what is it about multidimensional arrays? Why are they so controversial? There is a clear model to work from and plenty of implementation experience dating back to Fortran days. 04:35:03 Riastradh: things like (OCTET-VECTOR-GET-AS-UINT16 vector index) 04:35:16 Sure, or look at J (or R) for functional array manipulation 04:35:17 where GET = GET-AS-UINT8 04:35:28 OK. 04:35:33 *jcowan* suggests a whimsical idea 04:35:43 -!- jonrafkind [n=jon@98.202.86.149] has quit [Remote closed the connection] 04:35:44 jcowan, they are controversial because (array-set! x v i j k l) looks backwards. 04:36:11 Also, some people want arbitrary index bases, rather than having all indices zero-based. 04:36:19 Standardize CL's #nA syntax, and specify that it is converted to call on (make-array n list), but not specify what that might return. 04:36:34 (Evidence: SRFI 25) 04:36:36 s/call on// 04:36:53 R has the ability to 'alias" a vector with arbitrary set of indexes - pretty cool 04:36:55 (What's sad is that I'm *not* making this up.) 04:36:59 *jcowan* nods. 04:37:22 That too comes from the Fortran/Algol 60 tradition, and fits well with certain kinds of scientific programming -- I am told. 04:37:41 (I myself have never used flonums in anger, except in systems where they are the only kind of number: Perl, most Basics) 04:37:53 also Lua 04:38:05 Yes, allows iterating over a (meaningful) set of arbitrary indexes on the data set 04:38:48 jonrafkind [n=jon@98.202.86.149] has joined #scheme 04:39:42 Though what bounds like -3:100 might mean escapes me. 04:40:38 In sum, it's not all the "Lispy," but it's not a tone of work given the decades of good work on vectors/array procesing. This functionality would also fit into common SIMD capabilities of PC's and up. 04:41:21 *jcowan* nods. 04:41:44 I once wrote an APL-ish package for Smalltalk, but lost interest. 04:41:52 cool 04:41:56 Looking at SRFI 63 again, it is much more reasonable than I remembered. 04:42:41 -!- QinGW [n=wangqing@203.86.89.226] has quit [Success] 04:43:42 It certainly covers the data type bases thoroughly 04:44:24 I gave it a lot of flak for its elaborate array prototype scheme, but it's a better compromise in that area than I gave it credit for. 04:44:33 I'm not very happy with the whole approach of having a zillion different array types 04:44:59 Blobs are more flexible and realistic, and it's easy to construct homogeneous vectors on top of them. 04:45:07 Not quite. 04:45:10 Given Scheme's focus on the numeric tower, is it really avoidable? 04:45:36 One point of using SRFI 63 arrays is that they enable *efficient* storage for important representations of data, for use in numerically heavy programs. 04:45:49 If you mean space-efficient, so do blobs. 04:45:58 I mean time-efficient, too. 04:46:03 Hey, 63 specifies array aliases ("shared arrays") with different indexes. Not bad 04:46:29 Writing portable code to pull bits out of an octet vector will not be remotely as fast as a load-double processor instruction. 04:46:34 Well, in connection with a type-inferencing compiler, then yes. 04:46:49 Nothing says the code need be portable! 04:46:51 That said, notably absent from SRFI 63 is any way to check whether an array matches a certain prototype. 04:46:56 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 04:47:08 Hardware architectures don't treat all word sizes uniformly. Think of the floating point stack in param passing on the x86 04:48:02 matches? 04:48:15 -!- tabe` [n=user@adel.fixedpoint.jp] has quit ["rebooting"] 04:48:16 You mean introspect rank and type? 04:48:29 I expect that the natural implementation of SRFI-74 procedures is precisely using load-double. 04:48:32 -!- luz [n=davids@189.122.90.116] has quit ["Client exiting"] 04:48:45 QinGW [n=wangqing@203.86.89.226] has joined #scheme 04:48:49 (if (array-prototype? array A:floR64b) (do-some-wicked-fast-flonum-code) (do-the-general-case)) 04:48:52 *jcowan* notes that in fact SRFI-74 doesn't do floats, but the extension to them is obvious. 04:48:58 tabe` [n=user@adel.fixedpoint.jp] has joined #scheme 04:49:10 Swift's wit aside, `endianness' is a clumsy term for `byte order'. 04:49:20 *jcowan* nods. 04:49:39 (BYTE-ORDER BIG-ENDIAN) reads much better than (ENDIANNESS BIG), whether or not one agrees with the syntactic enumeration mechanism. 04:49:40 I'd rather have more procedures and fewer options to them in a SRFI-74 replacement. 04:49:53 Yes, such introspection would be good and should be there in a dynamic language. 04:50:06 ENDIANNESS sounds like a certain pronunciation of the name of a certain Midwestern state. 04:50:58 -!- QinGW1 [n=wangqing@203.86.89.226] has quit [Connection timed out] 04:51:20 BTW, on another topic, I've been using typed scheme, and learned here to use (List 'a 'b 'c) to represent tuples 04:51:32 There are T-shirts that say "Iowa University, Ohio City, Idaho" 04:51:48 But there's no projection function that works! 04:52:04 list-ref and so on fail the type test 04:52:31 The only way to access elts in the tuple is the pattern matching facility - trippy 04:53:06 And apparently UIowa actually does get mail addressed to "Idaho City, Iowa", so somehow the USPS can cope. 04:53:34 *jcowan* is no fan of homogeneous lists. 04:54:51 Indeed, it seems to me that blobs and homogeneous arrays should be equally fast: type checks, followed by indexing, followed by a single machine instruction to do the actual work. 04:55:07 Indeed, blobs index faster because there is no need to shift the index left, though this difference is trivial. 04:55:12 It's not either or - it's two types. Uniform lists (proper lists data List[a] = Nil | Cons(a, List a) ) - and then tuples 04:55:27 But tuples have fixed length. 04:55:41 True lists are both variable length *and* heterogeneous. 04:55:44 (Certain tagging schemes obviate the need for the left shifting you mention.) 04:55:45 *jcowan* considers that a virtue. 04:55:54 Well that's true. There's always List[Any] 04:56:07 (What language is that? Clean?) 04:56:12 (Certainly not Haskell, anyway.) 04:56:17 Except what can you do with an Any without casting it to some real type? 04:56:22 (Miranda?) 04:56:38 Actually "Any" is used on PLT typed scheme 04:57:31 Yes one can type test/cast via the pattern matching mechanism of via (if (number? n) ..... 04:57:53 How is that, Riastradh? If I want element 100 of a double array, I must access bytes 800-807 from the origin, whereas if I want a blob to cough up a double at position 800, I just access 800-807 on the spot. 04:57:54 Typed scheme is smart enough to infer n's type from the number? predicate - pretty fancy 04:58:03 I don't see how any sort of tagging can deal with that. 04:58:50 jcowan, if fixnums are tagged with a low 000, then the representation of the fixnum 100 is the machine word whose interpretation as an integer is 800. 04:59:47 Well, okay, but that trick can't work for 8-bit, 16-bit, 32-bit, and 64-bit indices simultaneously. 04:59:49 I don't understand the blob vs. uniform arry debate. Same machine language for get/set! in the end 04:59:57 That's true, jcowan. 05:00:26 *jcowan* can't believe some schemes insist on an 8-bit fixnum tag 05:00:30 Summermute, the difference lies in the fundamental representation. 05:00:37 jcowan, yikes! What Schemes insist on that? 05:00:42 Think of accessing an aligned double value from a C style record? 05:00:45 (as of 1986, anyway) 05:01:05 Isn't it a bag of bytes underneath? 05:01:44 double-get(data, 45) 05:01:46 -!- clog [n=nef@bespin.org] has quit [Read error: 60 (Operation timed out)] 05:02:05 Underneath, the machine instructions are typed, not the data:-) 05:02:06 I don't know, but R6RS insists that fixnums be able to handle at least 24 bits. 05:02:32 Presumably that number wasn't chosen merely at random. 05:02:40 *jcowan* vaguely recalls that MIT Scheme may have such a limit. 05:02:40 Summermute, with an octet vector, you are guaranteed a string of bits, which simply happen to be laid down in eight-bit units. With an array of inexact real numbers, that is all you are guaranteed -- inexact real numbers. 05:02:45 I love runtime systems - i'm a two low byte man ;-) 05:02:55 jcowan, MIT Scheme, for the past twenty years on non-Alpha systems has used six tag bits. 05:03:20 see you, guys 05:03:30 Riastradh and jcowan: thanks for the explanations. 05:03:34 -!- arthurmaciel [n=user@201.80.20.127] has quit [Remote closed the connection] 05:04:02 jcowan, I bet that the number 24 was pulled out of someone's arse as a compromise between 16 (which is what Common Lisp guarantees ) and the more sensible values (26-31). 05:04:03 Well that's true minus some "casting" of permiscuous data access operators in the language. 05:04:56 -!- QinGW2 [n=wangqing@203.86.89.226] has quit [Connection timed out] 05:05:05 Okay. 05:05:27 -!- davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has quit [Remote closed the connection] 05:05:32 SRFI-63, however, does *not* provide arrays of inexact real numbers. 05:05:32 Six tag bits requires ridiculous wasteful alignment or some kind of "segmenting" and shifting of the short address. 05:06:19 I think Summermute is correct: blobs and homogeneous vectors *are* equivalent. 05:06:44 Six tag bits is indeed wasteful, at least on 32-bit systems. 05:06:53 Not to a type system, but under the hood - UNLESS the machine architecture cares. 05:06:55 Chicken's tag is variable in size 05:07:30 I'm looking at 63 and it looks like there are homogenous arrays of many different kind of inexact numbers 05:08:00 Under the section "Homogenous Array Types" toward the beginning 05:08:19 1 bit for fixnum/non-fixnum, 2 bits for immediate/non-immediate, and 4 bits to discriminate non-fixnum immediate types. 05:08:41 Toward the beginning of the document 05:08:44 Summermute: Yes, but not of arbitrary inexact numbers, rather of real and complex flonums. 05:08:51 What misfortune. My chair has been stolen. 05:09:09 Misfortune indeed. Still, I trust you were not sitting in it at the time? 05:09:38 Exactly, bit 2 gets you immediates - chars, bytes, nil, #t, #f, #eof and so on 05:09:54 -!- jonrafkind [n=jon@98.202.86.149] has quit [Read error: 54 (Connection reset by peer)] 05:10:05 Byte values don't really need to be distinct from fixnums. 05:10:06 re inexact "abstractly" = that's true 05:10:32 In R6RS they are specifically interpreted as IEEE, which is not so good if you are on a non-IEEE system. 05:10:39 No -- but I had been up from my chair for no more than two seconds before the mischievous thief stole it. 05:10:48 I'm saying i always use byte 1 to distinguish pointers and byte 2 to distinguish immediates from fixnums 05:10:55 Would this thief be feline? 05:11:02 This thief is thoroughly feline. 05:11:11 Summermute: Do you mean byte or bit? 05:11:43 In cons cell heavy languages, you can use low bits 11 in the pointer to a cons cell. Allows for a compact 2 word cons cell, since the 'tag' is in the pointer to the cell 05:11:47 Hum, aren't fixnums immediates? 05:11:53 bits sorry 05:11:54 Go to court and file a writ of replevin. 05:12:00 Axioplase: Yes 05:12:16 In this context, though "immediate" is short for "non-fixnum immediate", plainly. 05:12:19 jonrafkind [n=jon@98.202.86.149] has joined #scheme 05:12:23 s/though/though, 05:12:27 I am afraid that this thief may transcend the law, jcowan, particularly if irked. 05:12:41 Yes, but I always distinguish fixnums from other immediates since a different bit marks the latter. 05:12:49 jcowan: ha, I get it, thanks 05:12:57 (A friend of my father's actually did so, having lost the ticket for his dry-cleaning.) 05:13:46 In Chicken, the 2 low order bits are: 01, fixnum; 11, fixnum; 10; other immediate; 00, pointer. 05:13:47 Then there's bibop with tagging at the beginning of a memory segment 05:14:22 I doubt any implementation still does that. 05:14:27 But parametric polymorphism pretty much screwed the bibop strategy as far as I can tell - i need to look for more modern literature on it. 05:14:36 jcowan, you must mean: 01, even fixnum; 11, odd fixnum; &c. 05:14:40 Quite. 05:15:08 hmmm, no 05:15:17 The bibop scheme is not entirely dead. Both Chez and Scheme48 employ a variant of it, in addition to low-tagging schemes. 05:15:36 01 = even non-negative fixnum or odd negative fixnum, etc. 05:15:36 bibop can be good for a bunch of fixed types and records/vectors of uniform cell size (like traditional lisp implementation) 05:15:47 jcowan, ah, you're right. 05:17:17 So then the next four bits (in little-endian order) of a non-fixnum immediate tell you if it's a character, boolean, (), eof object, undefined value, or unbound pseudo-value. 05:17:24 My current toy language is typed. So for the first time I'm looking at "taggless" GC with stack maps and structure descriptors 05:17:40 It's actually harder than just tagging everything!!!! 05:18:19 s/four bits/six bits 05:18:45 with additional variable-length complexities: booleans and characters have a 4-bit tag, the special values have a 6-bit tag and nothing else. 05:19:04 So tags can be 1, 2, 4, or 6 bits in length. 05:19:21 Very tricksy! 05:19:41 I've used 3 bits on top of bit #2 and that did the trick IIRC 05:20:28 Alot of immediate processing (minus fixnums) is direct comparison, so the tags don't get frobb'ed all that often 05:20:30 Not as tricksy as my nineteen-bit tagging scheme, but let's wait to go into that, and return to the Scheme reports. 05:21:03 POP 05:21:22 Quite, although the hack of making a tagged pointer point to the cdr rather than the car seems to have been forgotten. 05:21:26 POPJ, POPJ! 05:21:42 I think we have reached the end of the self-justifying SRFIs. 05:21:47 (That matters only if you have a depth-first moving collector, really.) 05:22:05 -!- heat [n=dima@8.21.172.227] has quit [Read error: 110 (Connection timed out)] 05:22:29 (I.e., it worked out nicely in T 3.0 and the non-RISC versions of T 3.1, until the Clark collector was replaced by a Cheney collector.) 05:22:42 (Well, it lets you cdr down a list with fewer additions, too.) 05:22:54 cheney's breadth first - what was the problem? 05:23:08 (Additions on most platforms during pointer dereferencing are zero-cost.) 05:23:39 (Fixed-addend additions, that is.) 05:24:26 Exactly! I actually use a 01 to mark pointers because the x86 doesn't give a hoot if it adjusts the address during the fetch/set. I use 00 low bits for fixnums for relatively fast arithmetic 05:24:28 (What do you mean by `what was the problem'?) 05:24:47 You seem to prefer the depth first collector 05:24:48 (Excuse me, I meant `What do you mean by `what was the problem?'?'.) 05:24:55 I do? 05:25:29 quote: it worked out nicely in T 3.0 and the non-RISC versions of T 3.1, until the Clark collector was replaced by a Cheney collector. /quote 05:25:46 That was a Good Thing, not a Bad Thing. 05:25:52 heat [n=dima@8.21.172.227] has joined #scheme 05:26:01 Oh, I misunderstood 05:26:37 The Clark collector exhibited the nice property that it arranged certain topologically close objects to be numerically close in memory. Tracing the cdr before the car, thus, would lay lists out into contiguous memory. 05:27:06 I believe the remaining issues are Unicode, mutable pairs, and mutable strings (which is somewhat tied to Unicode). 05:27:08 (Addressically close in memory?) 05:27:12 (Geometrically close in memory?) 05:27:15 That's nice - locality of reference, although I don't know how key the cache was then 05:27:37 It's no longer clear that memory adjacency *is* a good thing, given the way cache lines work. 05:28:20 Yeah, that's more for me to grok with these modern, newfangled computers :-) 05:29:34 As to Unicode, I think the essentials are to revoke the theoretical freedom of R5RS implementations to do integer->char mappings however they please, and to provide something like CL's CHAR-CODE-LIMIT. 05:31:06 Well, I'm going to go back to researching whether J vector like processing can be integrated smoothly into an ML'ish / Scala'ish kind of language design. Ciao for now. 05:31:59 Thus string-upcase need not handle all Unicode characters, but it must handle all provided by the implementation, and (Tom Lord notwithstanding) no non-Unicode characters ought to be provided. 05:32:07 I've already said enough about char-string equivalence. 05:32:18 Blargh. Can we please throw out strings, or make them equivalent to octet vectors? 05:32:28 -!- Summermute [n=scott@68.55.207.173] has left #scheme 05:32:40 I think strings as immutable atomics are a Good Thing. 05:32:51 Yes, but those are not remotely what the R5RS calls strings. 05:33:04 Quite so. 05:33:12 -!- sepult [n=user@xdsl-87-78-26-190.netcologne.de] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 05:33:19 Anyhow, I would suggest keeping the name while altering the essence. 05:33:41 s/name/names 05:34:05 Mutable pairs are a theoretical wart, but I'm not prepared to discard them. 05:35:53 decker [n=chatzill@user-0c9h6li.cable.mindspring.com] has joined #scheme 05:36:11 In any case, this has been *extremely* useful, but I must depart. 05:36:50 -!- jcowan [n=jcowan@cpe-74-68-154-139.nyc.res.rr.com] has quit ["Leaving"] 05:38:14 -!- ASau [n=user@83.69.240.52] has quit ["off"] 05:40:49 -!- proq [n=user@38.100.211.40] has quit [Remote closed the connection] 05:41:04 proq [n=user@38.100.211.40] has joined #scheme 05:49:53 -!- QinGW [n=wangqing@203.86.89.226] has quit [Read error: 104 (Connection reset by peer)] 05:50:16 QinGW [n=wangqing@203.86.89.226] has joined #scheme 05:51:36 -!- bweaver [n=user@c-68-60-0-190.hsd1.tn.comcast.net] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 05:52:35 so I'm getting an error, "The object 16 is not applicable". Not entirely sure what that means... 05:52:47 decker pasted "for-each" at http://paste.lisp.org/display/86412 05:53:28 I'm trying to do a for-each procedure. that's the code. calling along the lines of (for-each2 square (list 1 2 3)) 05:53:45 anyone know what I'm doing wrong? 06:01:19 jlongster [n=user@c-68-59-187-95.hsd1.tn.comcast.net] has joined #scheme 06:01:50 QinGW1 [n=wangqing@203.86.89.226] has joined #scheme 06:02:12 rcy` [n=rcy@d154-20-140-113.bchsia.telus.net] has joined #scheme 06:02:32 decker: you're doing indentation wrong 06:02:59 The if clause tries to evaluate one of the results 06:03:18 instead of creating a list to return (I think) 06:03:19 decker: then "nil" is not portable. 06:03:33 finally, you are not creating a list back 06:03:39 I'm also suspicious of using 'list' as a parameter name 06:04:04 Axioplase: yeah, I know. I defined that myself though. and the for-each builtin thingy doesn't return a list either, does it? 06:04:05 (foo bar) is not going to append "bar" to "foo". It's going to call function foo with parameter bar 06:04:43 oh, foreach, not map. Well, my previous message still holds somehow 06:04:45 decker, when you evaluate ((action proc (car list)) ...), you are asking Scheme to apply whatever value ACTION returns, as if it were a procedure, to the arguments `...'. 06:04:57 ((action proc (car list)) (for-each2 proc (cdr list))) 06:05:08 (foo (for-each2 proc (cdr list))) 06:05:13 (foo bar) 06:05:19 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 06:05:19 Presumably, if PROC is SQUARE, and LIST is (4 5 6) or something, then (ACTION PROC (CAR LIST)) will return 16, which, of course, is not a procedure. 06:05:22 -> function application 06:05:57 That's the source of the error message 06:06:12 Other bits are about doing it wrong :) 06:06:26 (There's nothing wrong with naming a variable LIST, by the way.) 06:06:29 Riastradh: ok, gotcha. gah. yeah, that was getting me in the beginning when i was learning this stuff. guess it's still getting me 06:07:24 (Yes. I still wouldn't.) 06:07:26 but now I'm really confused...isn't this sorta the same thing as what I came up with? http://sicp.org.ua/sicp/Exercise2-23 06:07:36 decker: do you know "BEGIN"? 06:07:56 Axioplase: nope. I don't. 06:08:53 err, read about scheme *syntax* a bit, then. That might help. 06:08:57 decker: Got to love the python version there :-D 06:09:37 decker: your code is not the "sorta same thing as" the SICP code 06:10:33 Axioplase: well I just tried that solution and it tells me "unbound variable 1". seems like it's doing almost the same thing to me... 06:10:33 decker: they use COND, you use IF. It makes a difference with respect to how many instructions you can do in each alternative 06:11:28 Then, you have trouble realizing that every pair of bracket around your code is going to be a a function application. 06:11:39 oops. misnamed proc. nevermind. 06:12:22 hmm, no. still can't get the "solution" to work. 06:12:53 (if test-epression then-expression else-expression) (cond ((test-expression) (then-expression-1) (then-expression-2) ...) (else (else-expression-1) (else-expression-2) ...)) 06:13:06 XTL: yeah, big fan of python here. 06:14:14 As you see (with this informal explanation), in an IF branch, you can do just one thing. So, you can't apply ACTION and then recurse. You need BEGIN to mean "do this, then that, then that, etc" 06:15:12 (begin do-this do-that and-finally-do-that) 06:15:47 ok, makes sense. 06:17:54 so, ((+ 2 2) (* 3 3)) will compute (+ 2 2), compute (* 3 3), and then try to apply 4 to 9. And hopefully fail. 06:17:58 -!- rcy [n=rcy@d154-20-140-113.bchsia.telus.net] has quit [Read error: 110 (Connection timed out)] 06:18:05 -!- QinGW [n=wangqing@203.86.89.226] has quit [Connection timed out] 06:18:29 replace (+ 2 2) by (action proc (car list)) and here's your bug. 06:18:55 A solution, is to make action return a function 06:19:19 Or to write a more "expected" for-each2 using BEGIN 06:19:49 haha, you don't like my indentation? seems way more readable to me...but to each his own I guess. 06:20:42 decker: no 06:20:49 It's quite well defined. 06:20:53 http://mumble.net/~campbell/scheme/style.txt 06:21:51 ha. "Absolutely do *not* place closing brackets on their own lines." 06:22:16 well, screw that. I can't read it as well with out doing that. 06:22:19 Lisp indentation had been defined probably before you were born. And believe it or not, following the rules makes it a lot easier for everyone, including me, you and your text-editor. 06:22:32 What do you write scheme code with? 06:22:43 vim? emacs? notepad? 06:22:44 edwin at the moment 06:24:20 -!- QinGW1 [n=wangqing@203.86.89.226] has quit [Read error: 104 (Connection reset by peer)] 06:24:21 decker: You can start/keep breaking a rule or two, but sticking as close as you can is a good idea anyway 06:24:38 Well, it must have proper handling of brackets Try to follow the rules for just a couple of days. 06:25:20 not a chance. twenty parenthesis all in a row, it's impossible to tell what the heck is going on that way. especially with my crappy code. 06:25:23 If you don't follow at least the "no closing brackets on their own line", chances are that no one is ever going to read your code anymore, nor help you. 06:25:44 ha, fine. so only when I past stuff. 06:26:05 (it is perfectly possible with bracket matching and indentation which is automatic based on closing brackets!) 06:26:13 decker: the parens are for the machines, indentation is for humans 06:26:35 XTL: exactly. I need to look at this stuff. 06:27:30 MrFahrenheit [n=RageOfTh@80.65.72.29] has joined #scheme 06:28:48 decker: http://www.ai.mit.edu/projects/dynlangs/ll1/shriram-talk.pdf pages 37-39. 06:29:46 I'm kinda partial to page 2 06:31:46 would there be a way to color code edwin like that then? 06:37:51 Edwin doesn't support syntax colouring. 06:38:10 You should prod ecraven about colours and Edwin, though. 06:41:49 -!- jlongster [n=user@c-68-59-187-95.hsd1.tn.comcast.net] has quit [Read error: 113 (No route to host)] 06:44:57 -!- sstrickl [n=sstrickl@pool-151-199-60-39.bos.east.verizon.net] has quit [Read error: 104 (Connection reset by peer)] 06:46:23 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 06:50:34 nite. thanks again for the help 06:50:39 -!- decker [n=chatzill@user-0c9h6li.cable.mindspring.com] has quit ["ChatZilla 0.9.85 [Firefox 3.5.2/20090729225027]"] 06:50:46 Sveklo2 [n=sveklo@a88-115-8-123.elisa-laajakaista.fi] has joined #scheme 06:50:56 -!- jonrafkind [n=jon@98.202.86.149] has quit [Read error: 110 (Connection timed out)] 06:54:28 -!- MichaelRaskin [n=MichaelR@213.171.48.239] has quit [Remote closed the connection] 06:54:56 MichaelRaskin [n=MichaelR@213.171.48.239] has joined #scheme 07:01:30 clog [n=nef@bespin.org] has joined #scheme 07:05:02 ejs [n=eugen@77.222.151.102] has joined #scheme 07:12:40 leppie|work [i=52d2e3c8@gateway/web/freenode/x-gagvzgtkjneavxsh] has joined #scheme 07:16:32 -!- boringwall [n=boringwa@c-68-54-140-150.hsd1.pa.comcast.net] has quit [Read error: 54 (Connection reset by peer)] 07:19:00 ASau [n=user@host180-230-msk.microtest.ru] has joined #scheme 07:23:50 edwardk [n=edwardkm@209-6-103-127.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 07:26:22 -!- edwardk [n=edwardkm@209-6-103-127.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has left #scheme 07:28:58 Riastradh: ;) I still have that patch somewhere, but haven't been Scheming much lately :( 07:30:40 ejs1 [n=eugen@nat.ironport.com] has joined #scheme 07:37:53 -!- leppie|work [i=52d2e3c8@gateway/web/freenode/x-gagvzgtkjneavxsh] has quit ["Page closed"] 07:40:39 -!- ejs [n=eugen@77.222.151.102] has quit [Read error: 110 (Connection timed out)] 07:43:50 npe [n=npe@195.207.5.2] has joined #scheme 07:43:53 -!- npe [n=npe@195.207.5.2] has quit [Remote closed the connection] 07:45:36 npe [n=npe@195.207.5.2] has joined #scheme 07:45:53 arthurmaciel [n=user@201.80.20.127] has joined #scheme 07:45:55 hi 07:46:16 guys, what is the difference between (lambda path (display path)) to (lambda (path) (display path)) ? 07:47:04 the first function takes an arbitrary number of arguments, while the second takes exactly one 07:47:19 in the first case, PATH will be a list of all parameters passed 07:48:11 ecraven: like (lambda (a . rest) ... ) 07:48:24 ecraven: even this way it needs one param, right? 07:49:46 yes 07:50:05 ecraven: thanks! 07:50:13 see you 07:50:15 -!- arthurmaciel [n=user@201.80.20.127] has quit [Remote closed the connection] 07:50:22 hm.. homework? 08:00:06 rdd [n=rdd@c83-250-145-223.bredband.comhem.se] has joined #scheme 08:13:10 mmc [n=mima@esprx02x.nokia.com] has joined #scheme 08:14:43 kuribas [i=kristof@d54C434AD.access.telenet.be] has joined #scheme 08:21:07 HG` [n=HG@89.166.249.111] has joined #scheme 08:34:09 -!- ASau [n=user@host180-230-msk.microtest.ru] has quit [Read error: 60 (Operation timed out)] 08:35:46 -!- Sveklo2 [n=sveklo@a88-115-8-123.elisa-laajakaista.fi] has quit [] 08:43:27 ASau [n=user@host180-230-msk.microtest.ru] has joined #scheme 08:44:16 leppie|work [i=52d2e3c8@gateway/web/freenode/x-hafpdqifycjbjshf] has joined #scheme 09:18:42 -!- rcy` is now known as rcy 09:38:31 ben_m [n=ben@85-127-19-83.dynamic.xdsl-line.inode.at] has joined #scheme 09:51:01 -!- HG` [n=HG@89.166.249.111] has quit [Client Quit] 09:51:06 masm [n=masm@85.244.77.190] has joined #scheme 09:51:43 HG` [n=HG@xdslhl111.osnanet.de] has joined #scheme 09:58:41 Mr-Cat1808 [n=Miranda@hermes.lanit.ru] has joined #scheme 10:00:09 Is the presentation video from balisp meeting(http://groups.google.com/group/comp.lang.scheme/browse_thread/thread/1f43f32b30e85597?hl=en) recorded and accessible anywhere? 10:00:13 -rudybot:#scheme- http://tinyurl.com/lgxrde 10:00:24 -!- ben_m [n=ben@85-127-19-83.dynamic.xdsl-line.inode.at] has left #scheme 10:02:24 egosh [n=Miranda@94.242.158.114] has joined #scheme 10:05:23 -!- Axioplase is now known as Axioplase_ 10:10:59 tagac [n=user@44.36.221.87.dynamic.jazztel.es] has joined #scheme 10:17:43 Edico [n=Edico@unaffiliated/edico] has joined #scheme 10:41:46 Mr-Cat1808: I want to know that too. I tried that gomeeting site, but the plugin loader stalled my entire FireFox. 10:46:28 thehcdreamer [n=thehcdre@94.198.78.26] has joined #scheme 10:47:16 Hi guys, anyone know a site for scheme quiz or challenges? I think they are a great way to learn the language. I googled a bit but I didn't find a site 10:53:34 Mr-Cat [n=Miranda@195.26.167.6] has joined #scheme 10:54:07 thehcdreamer: Maybe programming praxis blog? Not quiz, but a series of small, but interesting tasks. 10:54:59 Mr-Cat: that would be fine, I'm looking thanks 11:01:49 -!- Mr-Cat1808 [n=Miranda@hermes.lanit.ru] has quit [Read error: 104 (Connection reset by peer)] 11:11:27 -!- Mr-Cat [n=Miranda@195.26.167.6] has quit [Read error: 145 (Connection timed out)] 11:24:48 Jafet [n=Jafet@unaffiliated/jafet] has joined #scheme 11:45:45 ramkrsna [n=ramkrsna@unaffiliated/ramkrsna] has joined #scheme 11:46:08 -!- m811 [n=user@84-50-207-42-dsl.est.estpak.ee] has quit [Read error: 110 (Connection timed out)] 11:51:38 Sveklo2 [n=sveklo@88.115.8.123] has joined #scheme 11:59:04 -!- kuribas [i=kristof@d54C434AD.access.telenet.be] has quit [Read error: 104 (Connection reset by peer)] 12:02:03 -!- ski_ [n=md9slj@remote1.student.chalmers.se] has quit ["Lost terminal"] 12:06:09 mario-goulart [n=user@201-40-162-47.cable.viacabocom.com.br] has joined #scheme 12:08:02 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 12:17:27 edwardk_ [n=edwardk@32.143.42.61] has joined #scheme 12:17:33 -!- edwardk_ [n=edwardk@32.143.42.61] has quit [Client Quit] 12:18:43 edwardk_ [n=edwardk@32.143.42.61] has joined #scheme 12:19:23 ski_ [n=md9slj@remote1.student.chalmers.se] has joined #scheme 12:21:38 I'm doing something wrong in my syntax-rules but getting an yninformative error on fst and and. Ideas? http://comonad.com/scheme/hoas-pts.scm 12:21:55 Er fst and and 12:22:08 Er fst and snd 12:22:37 Gah autocorrecting phone 12:24:12 -!- patmaddox [n=patmaddo@14.sub-75-214-232.myvzw.com] has quit [Read error: 110 (Connection timed out)] 12:24:53 The error says something about lambda is not an identifier 12:35:55 -!- ejs1 [n=eugen@nat.ironport.com] has quit [Read error: 110 (Connection timed out)] 12:40:04 ejs [n=eugen@77.222.151.102] has joined #scheme 12:40:15 -!- ejs [n=eugen@77.222.151.102] has quit [Remote closed the connection] 12:40:44 -!- annodomini [n=lambda@wikipedia/lambda] has quit [Client Quit] 12:42:04 maybe `(app* (Q f) ((Q x) ...))' was meant to be `(app* (Q f) (list (Q x) ...))' ? 12:44:12 Hrmm 12:44:50 That looks very plausible :) 12:45:25 I just started spewing code so I have no notion of correctness here ;) 12:45:31 (and btw, `(Q (-> a))' expands to `(Q (Pi (_ a) (->)))' which expands to `(list 'Pi a (lambda (_) ->))') 12:46:21 edward1 [n=edwardk@32.143.42.61] has joined #scheme 12:46:27 moved to a bigger screen 12:46:56 Q (-> a) probably shouldn't be parsed 12:47:41 -!- ramkrsna [n=ramkrsna@unaffiliated/ramkrsna] has quit [Remote closed the connection] 12:49:32 you could say `[(Q (-> a b0 b ...)) (Q (Pi (_ a) (-> b0 b ...)))]' 12:50:49 still getting the lambda: not an identifier in (b *) down under fst even with the changes 12:50:55 why the outer brackets in `((spine (f (car as)) (cdr as)))' ? 12:51:24 typo ;) 12:51:29 *ski* isn't sure what causes that, yet 12:52:03 (btw, it might look nicer to use a named let `whnf') 12:52:35 how so? 12:53:19 my scheme style is somewhat lacking, as i haven't even looked at scheme in a decade or so and I think this is the second chunk of code I've gotten around to writing in it ;) 12:53:51 (define (whnf expr) 12:54:12 ah but i wanted spine to be local and i didn't want to mask the binding of expr 12:54:20 hence the noise 12:54:44 otherwise i risked reaching for the wrong binding 12:54:50 (let spine ((expr expr) 12:54:57 (as '())) 12:55:00 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 12:55:26 (pmatch expr 12:55:31 ...))) 12:56:03 hrmm 12:56:33 using that, `spine' is still local 12:56:36 slick i didn't know that existed ;) 12:56:43 that is nicer 12:58:03 basically `spine' there is a name for the point in the program where `expr' and `as' is bound to fresh locations with values, and the `(pmatch expr ...)' is next to be evaluated 12:58:49 (calling `spine' will recursively jump back out, with new given values for `expr' and `as') 12:59:41 makes sense 13:00:06 -!- thehcdreamer [n=thehcdre@94.198.78.26] has quit [] 13:02:01 uploaded a slightly modified version with those changes 13:02:41 heh i might replace kind hash with '[] for cuteness sake 13:03:03 m811 [n=user@84-50-207-42-dsl.est.estpak.ee] has joined #scheme 13:03:17 -!- edward1 is now known as edwardk 13:04:13 annodomini [n=lambda@64.30.3.122] has joined #scheme 13:04:43 > (equal? '() '[]) 13:04:43 #t 13:04:58 yeah 13:05:23 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 13:08:36 it is so close to working ;) 13:09:02 `equiv?' appears to not be defined 13:09:35 prolly coz i meant equal -- oops 13:10:50 foof [n=user@118-021-204-074.jp.fiberbit.net] has joined #scheme 13:11:05 i need the equal? check to check for equality of kinds and of the fresh-vars allocated during beta-equiv? 13:11:28 Eataix [n=kid85783@220-245-212-146-act.tpgi.com.au] has joined #scheme 13:12:33 what bugs me is i don't understand why fst complains about (b *) but none of the lams above it do 13:12:59 -!- annodomini [n=lambda@wikipedia/lambda] has quit [Client Quit] 13:13:23 -!- Eataix [n=kid85783@220-245-212-146-act.tpgi.com.au] has left #scheme 13:18:39 in `type-check', in the `Pi' and `lam' clauses, why not `let' instead of `letrec' ? (and unfold `lt') 13:19:07 let would be fine, i just didn't want to futz with the circularity ;) 13:19:15 hey foof , your gmail working again? ;p 13:19:24 in the same clauses, is it valid to pass `t' to `f' ? shouldn't `f' only be passed values of type `t' ? 13:20:42 i may be completely off base, since like i said, i just started spewing code, but i was trying to model the environment that way 13:21:20 also, i think you've forgotten that variables are type-correct expressions 13:21:52 there may be a bit of paranoia to my typechecker ;) 13:22:13 the lam is anal retentive about checking that it is introducing a valid type when it creates its pi type 13:22:57 and the unfolding of lt was a historical accident, since i used to just ask to type-check that too 13:26:40 moved from letrec to let* in those 13:27:34 leppie|work: it is, but my problem was not the same as everyone else's 13:27:45 For one thing, it lasted about 6 hours, not 100 minutes. 13:28:06 For another, neither IMAP nor POP nor SMTP were working (I never use the web UI). 13:28:12 uploaded the current version. 13:28:27 100 IT minutes :p 13:28:31 still beating my head against the wall w.r.t. where lambda is getting an invalid identifier from fst 13:31:22 oh .. 13:31:58 trying to figure it out by babystepping through the macro expander on dr scheme 13:31:59 s/(vs ...)/vs .../ in `Q' 13:32:09 doh! 13:32:16 are you using a case-sensitive Scheme? 13:32:33 leppie|work: that seems to be the case based on my quick test 13:32:48 leppie|work: i realize otherwise pair/Pair is problematic ;) 13:32:50 ok, just checking the obvious 13:33:35 ski: that fixed it 13:33:52 (you changed both occurances, yes ?) 13:33:57 yeah 13:34:28 i still think you need a base case in `type-check' 13:34:53 probably 13:35:04 (i.e. for variables) 13:35:04 i was just going through and adding rules as they came back to me ;) 13:35:42 well, variables expand via hoas, so there should be no unbound variables left over for it to match 13:36:03 hm right, ok 13:36:18 the only time variables exist is during the brief check for beta-equiv 13:36:36 then i just allocate a fresh one and check to see if it plumbs to the same places in both 13:36:58 then `(f t)' still looks strange to me 13:37:07 (s/then/the/) 13:37:25 Nshag [i=user@Mix-Orleans-106-1-200.w193-248.abo.wanadoo.fr] has joined #scheme 13:37:52 (and you don't need `let*' there, `let' suffices) 13:37:56 i probably screwed it all up on a fundamental level somewhere, which is why i bothered to write it out... to fix my intuition 13:38:07 i thought let didn't expose names to subsequent bindings but let* does 13:38:18 right 13:38:18 oh in Pi? 13:38:46 but you don't use earlier bindings in later ones, there 13:39:07 `Pi' and `lam' 13:39:09 hah good point 13:39:17 bombshelter13_ [n=bombshel@206.80.252.37] has joined #scheme 13:39:18 i forgot i'd changed the control flow around =) 13:39:47 updated once more 13:40:52 luz [n=davids@189.122.90.116] has joined #scheme 13:41:04 now the base case i probably need is a unit construction or that int : * or something like that ;) 13:42:05 i was surprised when skimming the web that i couldn't find a simple PTS demo in scheme 13:42:30 i understand why you wouldn't find one done in HOAS, but i expected the PTS 13:42:54 -!- HG` [n=HG@xdslhl111.osnanet.de] has quit [Client Quit] 13:43:16 -!- MrFahrenheit [n=RageOfTh@80.65.72.29] has quit [Read error: 110 (Connection timed out)] 13:43:53 annodomini [n=lambda@130.189.179.215] has joined #scheme 13:46:33 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Read error: 60 (Operation timed out)] 13:47:33 MrFahrenheit [n=RageOfTh@users-120-38.vinet.ba] has joined #scheme 13:55:03 HG` [n=HG@xdslhl111.osnanet.de] has joined #scheme 14:07:18 -!- edwardk_ [n=edwardk@32.143.42.61] has quit ["Colloquy for iPhone - http://colloquy.mobi"] 14:08:50 bballantine [n=bballant@firebug.buglabs.net] has joined #scheme 14:20:21 bweaver [n=user@c-68-60-0-190.hsd1.tn.comcast.net] has joined #scheme 14:20:32 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 14:24:16 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 14:33:16 jlongster [n=user@c-68-59-187-95.hsd1.tn.comcast.net] has joined #scheme 14:35:45 edwardk_ [n=edwardk@32.143.42.61] has joined #scheme 14:37:18 -!- mmc [n=mima@esprx02x.nokia.com] has quit [Remote closed the connection] 14:38:41 -!- 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"] 14:42:07 -!- edwardk [n=edwardk@32.143.42.61] has quit [Read error: 104 (Connection reset by peer)] 14:42:07 -!- edwardk_ is now known as edwardk 14:46:30 blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 14:47:51 Phaze [n=PhazeDK@0x5da32b16.cpe.ge-0-1-0-1104.soebnqu1.customer.tele.dk] has joined #scheme 14:51:07 -!- Adrinael [n=adrinael@barrel.rolli.org] has quit [Client Quit] 14:54:52 langmartin [n=user@exeuntcha.tva.gov] has joined #scheme 15:00:33 -!- MichaelRaskin [n=MichaelR@213.171.48.239] has quit [Remote closed the connection] 15:00:40 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Read error: 110 (Connection timed out)] 15:01:46 -!- ASau [n=user@host180-230-msk.microtest.ru] has quit ["off"] 15:07:06 Sveklo [n=sveklo@gw0.stadinetti.fi] has joined #scheme 15:13:38 kuribas [i=kristof@d54C434AD.access.telenet.be] has joined #scheme 15:22:17 -!- npe [n=npe@195.207.5.2] has quit [] 15:22:28 sepult [n=user@xdsl-87-78-171-88.netcologne.de] has joined #scheme 15:27:50 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 15:28:25 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [Read error: 110 (Connection timed out)] 15:29:02 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 15:30:24 edward1 [n=edwardk@32.143.42.61] has joined #scheme 15:40:09 -!- edward1 [n=edwardk@32.143.42.61] has quit [Read error: 104 (Connection reset by peer)] 15:41:31 Sigh. I think I managed to kill DrScheme by trying to invoke the macro stepper on an accidentally infinitely recursive macro. 15:51:05 jonrafkind [n=jon@eng-4-161.hotspot.utah.edu] has joined #scheme 15:56:41 meanie 15:56:43 patmaddox [n=patmaddo@181.sub-75-217-105.myvzw.com] has joined #scheme 15:56:47 reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 15:57:07 -!- edwardk [n=edwardk@32.143.42.61] has quit ["Colloquy for iPhone - http://colloquy.mobi"] 15:57:15 -!- HG` [n=HG@xdslhl111.osnanet.de] has quit [Read error: 113 (No route to host)] 15:59:48 HG` [n=HG@xdslhl111.osnanet.de] has joined #scheme 16:01:12 dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has joined #scheme 16:02:01 -!- dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has quit [Remote closed the connection] 16:02:42 dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has joined #scheme 16:04:45 ejs [n=eugen@67-0-178-94.pool.ukrtel.net] has joined #scheme 16:10:30 no wonder scheme can do anything, there are 100's of implementation to choose from! :\ 16:11:02 standards are wonderful things; let's have lots of them 16:12:20 they should get people/implementaers to get together to write a portable version of the std library (iow those not in (rnrs base) mostly) for all implementation to use 16:12:38 im sure that's how it works with libc, regardless of the compiler used 16:12:58 tagac` [n=user@46.37.221.87.dynamic.jazztel.es] has joined #scheme 16:13:25 Uh, no. 16:13:26 implementation are free to provide their own versions though of course 16:13:30 There are many libc implementations. 16:13:47 yes, but you can theoretically link to anyone 16:14:07 anyways, that's how I see Scheme should be split 16:14:33 edwardk [n=edwardk@32.143.35.247] has joined #scheme 16:14:43 get a group to provide a full std library, then if needed, small versions could be created for special needs 16:15:15 Jafet1 [n=Jafet@unaffiliated/jafet] has joined #scheme 16:15:19 or allow the user/implementor to choose which subset is required 16:15:41 -!- Jafet [n=Jafet@unaffiliated/jafet] has quit [Nick collision from services.] 16:15:49 Scheme of all languages I would think would be a nice target for this 16:15:58 -!- Jafet1 is now known as JAFET 16:16:01 given the minimal number of core forms needed 16:16:30 blackened`__ [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 16:17:38 -!- tagac` [n=user@46.37.221.87.dynamic.jazztel.es] has left #scheme 16:18:39 A full portable R6RS standard library (without implementation-sepcific requirements) should not be more than 20k-50k lines of code, which is not hard given a group of developers. 16:19:49 Independent of concerns of what's *in* the standard library (and I think there's quite a lot of the R6RS library which is repulsive), I think it still leaves a substantial amount of controversy over what's *in* the core. 16:20:15 Does the core have to support the R6RS implicitly-phased library system? Is `syntax-rules' included? Is a full numeric tower required? 16:20:18 of course, but as a group working together these issues can be eliminated 16:20:42 By eliminating members of the group? Sure. 16:20:43 library is implememtation-specifc 16:20:55 no why? 16:21:06 well, maybe I do know... 16:21:38 How are you going to get someone who doesn't want a full numeric tower requirement to agree with someone who does? 16:21:44 -!- tagac [n=user@44.36.221.87.dynamic.jazztel.es] has quit [Read error: 104 (Connection reset by peer)] 16:22:04 I used to find the scheme community extremely stubborn (but later I did find it is mostly with good reason ;p) 16:22:15 -!- greboides [n=greboide@189-54-242-137-nd.cpe.vivax.com.br] has quit [Remote closed the connection] 16:23:12 if some cant decide, surely between the implementation and the RnRS, there would exist a common interface, if not, the implementation can provide their own version 16:24:00 conditional compilation would allow the user/implementer to exclude certain number systems 16:24:04 Rather than have a WG1 and a WG2, I would rather see a multitude of working groups formed consensually which each propose internally consistent draft standards; these standards can then be argued about, and feedback fed back into the groups iteratively, until a voting process is held by some selected group of electors to choose which standard(s) are ratified. 16:25:18 arguing gets you nowhere, seeing how something works and behaves get things moving forward a lot faster 16:26:00 That's actually what I'm proposing - with a number of draft standards to choose from, each with demonstration implementations, it would be much easier to determine how something is going to work in practice. 16:26:09 MichaelRaskin [n=MichaelR@195.91.224.225] has joined #scheme 16:26:26 well that may be a start to my idea :) 16:26:49 we all agree in principle 16:27:21 We do? At least on the mailing list, there seems to be a certain reactionary anti-hygiene element which would like to see `syntax-rules' stripped from Thing 1. 16:28:00 how many implementers/dictators how posted to that thread? 16:28:10 s/how/have/ 16:28:14 I don't recall. 16:28:18 not many 16:28:34 i normally dont even bother reading it 16:28:41 it's all petty 16:29:11 I'm convinced that there isn't enough agreement in principle to continue the single-consensus process that led to the R6RS, and I consider the WG1/WG2 process to also be single-consensus in the sense that the WG2 document is intended to be a superset of and consistent with the WG1 document. 16:29:20 for all I care define a basic Scheme complaince level without any macro support :) 16:30:22 -!- kuribas [i=kristof@d54C434AD.access.telenet.be] has quit ["ERC Version 5.2 (IRC client for Emacs)"] 16:30:54 leppie, Aubrey Jaffer would certainly get behind that idea! 16:31:49 well why not? You could define a scheme that uses strictly expanded code at runtime 16:32:17 Would that basic compliance level have multiple-shot, unlimited-extent reifiable continuations? 16:32:39 if it depends on me, no 16:32:48 -!- blackened`_ [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Read error: 110 (Connection timed out)] 16:32:51 perhaps not even escape continuations 16:33:08 Would it have `set!' and friends? I'd very much like to see a clearly identified purely-functional subset of Scheme. 16:33:54 if the implementation can provide letrec without set! then I dont see why. :) I rarely use set! in my code 16:36:39 ceninan [n=anwaron@c-ea3be255.1119-1-64736c10.cust.bredbandsbolaget.se] has joined #scheme 16:37:09 -!- JAFET is now known as Jafet 16:39:27 -!- HG` [n=HG@xdslhl111.osnanet.de] has quit [Client Quit] 16:40:16 -!- jonrafkind [n=jon@eng-4-161.hotspot.utah.edu] has quit [Connection timed out] 16:41:54 -!- reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote closed the connection] 16:43:40 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 16:46:29 jonrafkind [n=jon@crystalis.cs.utah.edu] has joined #scheme 16:50:35 -!- dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has quit [Read error: 110 (Connection timed out)] 16:51:18 -!- Jafet [n=Jafet@unaffiliated/jafet] has quit ["Leaving."] 16:51:34 sstrickl [n=sstrickl@129.10.110.45] has joined #scheme 16:57:56 -!- edwardk [n=edwardk@32.143.35.247] has quit [Read error: 104 (Connection reset by peer)] 17:06:43 -!- Sveklo [n=sveklo@gw0.stadinetti.fi] has quit [Read error: 60 (Operation timed out)] 17:07:40 Sveklo [n=sveklo@cs181131.pp.htv.fi] has joined #scheme 17:08:43 Hezy [n=hezy@62.56.254.219] has joined #scheme 17:15:36 edwardk [n=edwardk@32.143.35.247] has joined #scheme 17:18:57 -!- Hezy [n=hezy@62.56.254.219] has left #scheme 17:29:46 chandler, `Working group 2 is encouraged to propose new working groups for any new features that it considers desirable but cannot pursue without risking the timeliness of its primary mission.' That's close, at least, to what you describe -- and I think that the steering committee could probably be steered closer to what you describe. 17:30:13 reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 17:31:04 Indeed, I think that was the intent of the steering committee member whom I'm sitting a few feet away from. 17:38:49 -!- reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has quit [Remote closed the connection] 17:41:25 -!- jlongster [n=user@c-68-59-187-95.hsd1.tn.comcast.net] has quit [Read error: 113 (No route to host)] 17:46:21 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [] 17:47:09 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 17:47:10 -!- Sveklo2 [n=sveklo@88.115.8.123] has quit [Read error: 145 (Connection timed out)] 17:47:24 reprore [n=reprore@ntkngw598092.kngw.nt.ftth.ppp.infoweb.ne.jp] has joined #scheme 17:48:49 saccade [n=saccade@c-98-216-70-18.hsd1.ma.comcast.net] has joined #scheme 17:49:49 jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has joined #scheme 17:54:07 -!- ceninan [n=anwaron@c-ea3be255.1119-1-64736c10.cust.bredbandsbolaget.se] has left #scheme 17:54:32 -!- sstrickl [n=sstrickl@129.10.110.45] has quit ["rcirc on GNU Emacs 23.0.60.1"] 18:01:51 -!- langmartin [n=user@exeuntcha.tva.gov] has quit [Remote closed the connection] 18:03:06 langmartin [n=user@exeuntcha.tva.gov] has joined #scheme 18:05:31 dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has joined #scheme 18:06:03 makmanalp [n=legato@80.76.201.55] has joined #scheme 18:06:33 anyone remember the string building syntax in plt scheme where you use ~s? 18:07:08 do you mean FORMAT? 18:07:09 mrsolo [n=mrsolo@nat/yahoo/x-evjeeuykpzwwmsec] has joined #scheme 18:07:59 i can't remember, let me see 18:08:09 oh, formatting strings yes 18:08:18 a la sprintf 18:08:50 ah-ha, got it 18:08:57 Elly: thank you 18:26:10 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 18:32:37 FORMAT C:\ 18:37:00 jonrafkind: I tried that, but now, who is General Failure? and why is he reading my hard disk? 18:42:18 *makmanalp* has quit: Broken Pipe 18:44:18 -!- Sveklo [n=sveklo@cs181131.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 18:45:06 makmanalp: heh :P 18:45:45 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [Read error: 104 (Connection reset by peer)] 18:47:52 ASau [n=user@83.69.240.52] has joined #scheme 19:02:06 -!- leppie|work [i=52d2e3c8@gateway/web/freenode/x-hafpdqifycjbjshf] has quit [Ping timeout: 180 seconds] 19:06:48 laynor [n=laynor@93.107.159.53] has joined #scheme 19:10:47 -!- sepult [n=user@xdsl-87-78-171-88.netcologne.de] has quit ["ERC Version 5.3 (IRC client for Emacs)"] 19:11:59 elias` [n=c@94-193-95-252.zone7.bethere.co.uk] has joined #scheme 19:18:26 -!- edwardk [n=edwardk@32.143.35.247] has quit [Read error: 104 (Connection reset by peer)] 19:19:13 -!- laynor_ [n=laynor@93.107.26.166] has quit [Read error: 110 (Connection timed out)] 19:29:18 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Read error: 54 (Connection reset by peer)] 19:30:32 elias` [n=c@94-193-95-252.zone7.bethere.co.uk] has joined #scheme 19:40:01 macr0 [n=vista@71.41.179.131] has joined #scheme 19:42:37 -!- patmaddox [n=patmaddo@181.sub-75-217-105.myvzw.com] has quit [Read error: 110 (Connection timed out)] 19:44:35 rudybot: seen jao 19:44:36 Arelius: jao was seen joining in/on :#scheme six days ago, and then jao was seen quitting in/on 199.Red-79-144-20.dynamicIP.rima-tde.net five days, twenty hours ago, saying "Connection timed out" 19:45:08 -!- ejs [n=eugen@67-0-178-94.pool.ukrtel.net] has quit [Read error: 110 (Connection timed out)] 19:47:01 patmaddox [n=patmaddo@239.sub-75-217-207.myvzw.com] has joined #scheme 19:47:40 RageOfThou [n=RageOfTh@users-42-148.vinet.ba] has joined #scheme 19:48:30 -!- MrFahrenheit [n=RageOfTh@users-120-38.vinet.ba] has quit [Read error: 104 (Connection reset by peer)] 19:51:50 edwardk [n=edwardk@32.143.35.247] has joined #scheme 20:13:46 davazp [n=user@56.Red-79-153-148.dynamicIP.rima-tde.net] has joined #scheme 20:16:46 -!- ASau [n=user@83.69.240.52] has quit [Read error: 104 (Connection reset by peer)] 20:18:08 -!- saccade [n=saccade@c-98-216-70-18.hsd1.ma.comcast.net] has quit ["This computer has gone to sleep"] 20:42:13 -!- langmartin [n=user@exeuntcha.tva.gov] has quit [Remote closed the connection] 20:44:19 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 20:46:19 chandler: A complaint on the plt-scheme list would be good. IIRC, it (the macro debugger) will run the code. 20:48:30 mmc [n=mima@cs137104.pp.htv.fi] has joined #scheme 20:48:38 The issue was in trying to macro step something that expanded to itself, e.g. (define-syntax foo (syntax-rules () ((_) (foo)))) (foo) 20:48:55 Clicking "Stop" didn't help, but sending SIGINT to the process did. 20:53:04 *chandler* waits for the email confirmation from the list subscription 21:03:15 tagac [n=user@46.37.221.87.dynamic.jazztel.es] has joined #scheme 21:13:47 -!- edwardk [n=edwardk@32.143.35.247] has quit [Read error: 104 (Connection reset by peer)] 21:15:38 haesbaert [n=haesbaer@201.54.129.16] has joined #scheme 21:17:02 -!- mario-goulart [n=user@201-40-162-47.cable.viacabocom.com.br] has quit [Remote closed the connection] 21:19:15 sup 21:30:30 -!- jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Read error: 60 (Operation timed out)] 21:34:31 -!- patmaddox [n=patmaddo@239.sub-75-217-207.myvzw.com] has quit [Read error: 110 (Connection timed out)] 21:35:21 -!- bombshelter13_ [n=bombshel@206.80.252.37] has quit [] 21:35:58 -!- tessier [n=treed@kernel-panic/sex-machines] has quit ["leaving"] 21:38:58 elias`_ [n=c@94-193-95-252.zone7.bethere.co.uk] has joined #scheme 21:39:13 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Read error: 104 (Connection reset by peer)] 21:39:19 -!- elias`_ is now known as elias` 21:39:42 tessier [n=treed@mail.copilotco.com] has joined #scheme 21:47:14 chandler: also try Ctrl-k to "kill" instead of just stop. 21:48:03 Oh, I didn't even try doing that. 21:53:00 -!- dysinger [n=dysinger@71-20-35-99.war.clearwire-wmx.net] has quit [Connection timed out] 21:54:47 -!- npe [n=npe@94-224-251-223.access.telenet.be] has quit [] 21:56:22 -!- tjafk2 [n=timj@e176202020.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 21:56:30 -!- elias` is now known as ve 21:56:48 kaZmrfx [n=pikseli@cs181133068.pp.htv.fi] has joined #scheme 22:01:00 -!- Edico [n=Edico@unaffiliated/edico] has quit ["Ex-Chat"] 22:01:45 -!- haesbaert [n=haesbaer@201.54.129.16] has quit [Remote closed the connection] 22:03:19 merus [n=merus@c-67-175-45-120.hsd1.in.comcast.net] has joined #scheme 22:03:47 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 22:11:27 What is the relation of IEEE 1178 to RnRS? 22:11:43 chandler: Matthias's reply probably clarified why I said that reporting it is a good idea. 22:12:04 -!- ski_ [n=md9slj@remote1.student.chalmers.se] has quit ["Lost terminal"] 22:12:56 -!- bballantine [n=bballant@firebug.buglabs.net] has quit ["Leaving"] 22:13:17 -!- Phaze [n=PhazeDK@0x5da32b16.cpe.ge-0-1-0-1104.soebnqu1.customer.tele.dk] has quit ["Leaving"] 22:13:19 chandler: As for C-k -- the first time you use the `stop' button (I think thaty C-b does the same), it will `break' the running thread, OTOH, if you use C-k or click the `stop' button a second time, it shuts down the csutodian, which is roughly the equivalent of `kill -9'. 22:13:36 karme [n=user@kallisto.karme.de] has joined #scheme 22:17:40 saccade [n=saccade@c-66-31-201-117.hsd1.ma.comcast.net] has joined #scheme 22:19:02 -!- jonrafkind [n=jon@crystalis.cs.utah.edu] has quit [Read error: 113 (No route to host)] 22:20:20 jonrafkind [n=jon@crystalis.cs.utah.edu] has joined #scheme 22:30:54 -!- pfo_ [n=pfo@84.114.49.188] has quit [Read error: 145 (Connection timed out)] 22:31:51 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 22:36:29 Adamant [n=Adamant@unaffiliated/adamant] has joined #scheme 22:38:15 -!- masm [n=masm@85.244.77.190] has quit ["Leaving."] 22:42:43 Good scheme related video lectures? 22:48:12 -!- synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has quit [Remote closed the connection] 22:49:15 synx [i=synx@gateway/gpg-tor/key-0xA71B0C6A] has joined #scheme 22:52:52 kaZmrfx, http://video.google.com/videosearch?q=sussman+scheme&emb=0&aq=f# 22:53:21 http://video.google.com/videosearch?q=sussman+scheme&emb=0&aq=f#q=dan+friedman&emb=0 22:53:23 -rudybot:#scheme- http://tinyurl.com/kjnjjn 22:54:58 seen Sussmans Scheme lectures... 22:55:46 http://www.iro.umontreal.ca/~boucherd/mslug/meetings/20041020/minutes-en.html 22:55:48 -rudybot:#scheme- http://tinyurl.com/fj4af 22:56:31 http://www.pawfal.org/fluxus/ 22:57:07 not really lectures but maybe you like them anyway 22:57:30 aa yes. I will try the scheme to c one.Thank you :)= 22:59:45 -!- saccade [n=saccade@c-66-31-201-117.hsd1.ma.comcast.net] has quit ["This computer has gone to sleep"] 23:00:37 -!- macr0 [n=vista@71.41.179.131] has left #scheme 23:06:39 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit ["A cow. A trampoline. Together they fight crime!"] 23:10:32 patmaddox [n=patmaddo@237.sub-75-217-255.myvzw.com] has joined #scheme 23:11:18 boringwall [n=boringwa@c-68-54-140-150.hsd1.pa.comcast.net] has joined #scheme 23:12:05 I have a function that takes in a list (l1) and a function (f). I want to compute f(l1) for every odd element in the list. What's the easiest way to approach this? 23:13:01 -!- kaZmrfx [n=pikseli@cs181133068.pp.htv.fi] has quit [Read error: 104 (Connection reset by peer)] 23:13:48 boringwall: "Every odd element" -> l1 is a list of numbers, then? 23:13:54 Yes 23:13:59 Strictly integers 23:14:35 If your function is given (list 5 4 2 7) and f, you want (list (f 5) (f 7))? 23:16:08 My function is given (list 1 2 3 4) and another funcion f (e.g. (+ x 10)) so it should return (list 11 2 13 4) 23:17:20 haesbaert [n=haesbaer@201.54.129.16] has joined #scheme 23:17:51 Ah, so you want the even integers to pass through unchanged. 23:18:10 Yes 23:18:24 Well, I guess I worded that wrong 23:18:33 I want every other element to be passed through unchanged 23:19:22 boringwall: Oh! You want the odd-indexed elements to be modified. 23:19:28 Yes 23:19:32 That is correct 23:20:15 boringwall: This is a perfect example of where a helper function is needed. 23:21:14 Alright, I'll mess around with that approach, thanks 23:21:44 Your main procedure can accept a list and an Integer -> Integer function, then foist the real work off to a helper function that takes an extra parameter. 23:22:06 Yeah, that is what I'm going for right now 23:22:32 saccade [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 23:22:41 The helper can recurse to itself and keep updating that parameter (erm, argument). You might use the arg to keep track of the index, or even just whether you're at an odd index. 23:25:54 -!- tagac [n=user@46.37.221.87.dynamic.jazztel.es] has quit [Remote closed the connection] 23:27:23 TimMc - Got it working, thanks 23:27:26 That was rather quick 23:29:10 perdix [n=perdix@sxemacs/devel/perdix] has joined #scheme 23:29:53 boringwall: You can either write the helper procedure inside the main procedure (if you're a bit OCD about filling the top-level environment with names), or keep it outside to reduce potential scope bugs and make testing easier. 23:30:39 Oh, glad to hear it! 23:32:53 -!- RageOfThou [n=RageOfTh@users-42-148.vinet.ba] has quit [Read error: 110 (Connection timed out)] 23:33:27 scope bugs? 23:34:24 synx: I've sometimes referred to an identifier in the enclosing lambda when I meant to refer to one of the local arguments of a named let. 23:34:37 Hijinks ensued. 23:36:02 eli: Ah, well, I hope it was useful then. 23:36:23 same thing happens when you write it as a separate function... 23:36:53 I've done the same thing. Just curious why it's more obvious when you separate out helper procedures. 23:37:17 synx: Yes, but the compiler catches it then, instead of the testing code. 23:39:56 -!- felipe [n=felipe@my.nada.kth.se] has quit [Client Quit] 23:40:04 No I mean... 23:41:38 (define (foo bar) (+ bar 19)) (define (baz bar) (- (foo 23) bar) 23:41:42 and... 23:41:58 (define (baz bar) (- ((lambda (bar) (+ bar 19)) 23) bar) 23:42:01 are both equivalent programs. But the second one is harder to read. Why is that? 23:45:10 -!- mmc [n=mima@cs137104.pp.htv.fi] has quit [Read error: 110 (Connection timed out)] 23:47:40 synx: The problem there is that the second example has fewer names to use for comprehension. 23:48:53 fewer names I guess... but even this is confusing: 23:49:44 (define (baz bar) (let ((foo (lambda (bar) (+ bar 19)))) (- (foo 23) bar))) 23:50:56 synx: The environment of foo is more complex, which makes it harder to read. 23:51:10 (There are more bindings to consider.) 23:53:33 Also, you are shadowing the bar binding, which I find confusing to read. 23:56:26 incubot: I get this sinking feeling that I am not using the terms "identifier", "binding", "reference", and "variable" correctly all of the time. 23:56:30 i think im that important point is slowly sinking in.. 23:56:45 I've given up and just mix them around randomly. 23:56:58 incubot: Oh, don't be so modest. 23:57:01 oh, I'm playing with a "double dummy solver" -- it's a card-game thing, and I'd been representing cards in a hand as a list; profiling showed that finding a specific card was taking a long time, so I switched to vectors, and got a modest speedup. The nice thing about your library is that it provides replacements for what I'd already been using: I could pretty much replace map with vector-map, copy with vector-copy, etc. 23:57:57 My girlfriend was cleaning out her old apartment and found a paper copy of R5RS. It was a handout from a class at Wellesley. :-)