00:14:26 -!- tizoc_ is now known as tizoc 00:26:58 -!- athos [n=philipp@92.250.250.68] has quit ["leaving"] 00:27:18 Riastradh: Do you have time to answer some questions about using PARSE-STREAM? 00:31:31 If I understand correctly, the position and advancer variables are tied together, so that position can be anything, but should be some data structure that the advancer knows how to use, and which is passed as the first argument to the advancer, right? 00:31:45 The second argument to the advancer is the last token received? 00:32:00 And the advancer is expected to return another position object. 00:32:23 It is called after every token is read? 00:33:25 I'm still a bit confused about what should be passed as context. 00:41:13 CSdread__ [n=danielf@209-188-116-183.taosnet.com] has joined #scheme 00:42:22 -!- CSdread_ [n=danielf@209-188-116-183.taosnet.com] has quit [Read error: 104 (Connection reset by peer)] 00:42:46 -!- CSdread__ is now known as CSdread_ 00:48:54 -!- jonrafkind [n=jon@crystalis.cs.utah.edu] has quit [Read error: 113 (No route to host)] 00:49:58 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 00:55:12 -!- dysinger [n=tim@166.129.210.64] has quit [Read error: 110 (Connection timed out)] 01:01:58 -!- melgray [n=melgray@70.99.250.82] has quit [] 01:07:02 -!- sepult [n=buggarag@xdsl-87-78-75-2.netcologne.de] has quit ["leaving"] 01:08:46 arcfide, to your questions, in order: Yes, I have a moment to answer questions; yes, the advancer and position are tied, and the advancer is a procedure to compute the next position given the previous position and a token; I forget the order of arguments; yes, the advancer is called for each token read. 01:10:17 Riastradh: That may be one of the few times I have received so many yes answers in a row. 01:10:21 GreyLensman [n=ray@c-76-109-2-157.hsd1.fl.comcast.net] has joined #scheme 01:10:32 Riastradh: So, when does context come into play? 01:10:47 When you want it to come into play, to pass context along into the parsing. 01:11:01 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 01:11:16 For example, the RDF Turtle parser uses it to accumulate a prefix registry. 01:12:11 Oooh. 01:12:35 I see, so it is just an user defined value that can be referenced in the parsers if needed? 01:13:07 Yes. 01:13:46 Great, I think that makes sense now. 01:17:15 arthurmaciel [n=user@189.100.89.17] has joined #scheme 01:17:17 hi there 01:17:36 does anyone know any good material about natural language processing? I'm a newbie 01:18:11 -!- r2q2 [n=user@c-24-7-212-60.hsd1.il.comcast.net] has quit [Read error: 110 (Connection timed out)] 01:19:33 -!- MrFahrenheit [n=RageOfTh@92.36.186.133] has quit [Read error: 110 (Connection timed out)] 01:19:47 arthurmaciel: Read Foundations of Statistical Natural Language Processing by Manning & Schütze. 01:20:35 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [] 01:20:50 chupish [i=182ed347@gateway/web/ajax/mibbit.com/x-880f6df8ead6ffe0] has joined #scheme 01:20:55 ... and use some other language than Scheme. 01:22:10 peter_12_ [i=d85e983e@gateway/web/ajax/mibbit.com/x-b605c6e7a938c43a] has joined #scheme 01:25:19 foof: thanks. which language do you recommend? (just for an example, for me to get the idea) 01:25:36 QA4 & Planner! 01:25:40 Conniver might work too 01:25:57 ;) 01:26:53 jcowan [n=jcowan@cpe-74-68-154-18.nyc.res.rr.com] has joined #scheme 01:28:03 thanks chupish and conniver. 01:28:09 oops, and foof 01:28:27 Oh, sorry, that was a terrible, terrible joke 01:28:33 Those are *very* old languages 01:28:44 hmm, what about AI? I really want to learn it generaly 01:29:10 PAIP; Dover has a book that covers QA4 & Planner though it's quite old 01:29:13 chupish: don't make jokes with two difficulty variables: old languages 01:29:28 http://norvig.com/paip.html 01:29:30 heh 01:30:56 hmm, it was really great if norvig had done this using Scheme 01:31:36 "That is an exercise left to the reader..." 01:32:10 If you're looking for something logical & interesting, you can try kanren, which is from the Reasoned Schemer book... 01:32:37 well, interesting meaning "involves scheme" in this context 01:34:19 chupish: but can it 'teach' me AI? 01:34:35 chupish: this would be 'really interesting' in this context :-) 01:34:36 I would assume that you are naturally intelligent to begin with... 01:34:44 ;) 01:34:47 -!- jcowan [n=jcowan@cpe-74-68-154-18.nyc.res.rr.com] has quit [Read error: 60 (Operation timed out)] 01:35:07 kanren. you mean THE Reasoned Schemer or another book written by it? 01:35:38 PAIP would be the best book I've read on the topic; I've a few other books, mostly Prolog books... 01:36:03 Kanren is the declarative logic language presented in The Reasoned Schemer, yes 01:36:12 kanren.sf.net 01:37:26 oh. I'm still on The Seasoned Schemer 01:37:39 will finish it to start The Reasoned one 01:38:03 I'm not sure if reasoned covers anything (deeply) about AI 01:38:23 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 01:38:48 -!- peter_12_ [i=d85e983e@gateway/web/ajax/mibbit.com/x-b605c6e7a938c43a] has quit ["http://www.mibbit.com ajax IRC Client"] 01:40:02 chupish: man, I read 'sample applications' on kanren page at sf and understand nothing. 01:40:11 chupish: is CL too way different from Scheme? 01:40:35 somewhat; the basic concepts are similar, but CL is a bit more, uh, bloated 01:41:18 if you already know scheme, the biggest hurdle, in my humble opinion, is the N-namespace concepts, especially when it comes to lambdas, and passing functions 01:42:05 that and the "I stole all my names from ZetaLisp/InterLisp/MacLisp/FranzLisp" notation... 01:42:13 N-namespace concepts sounds really weird to me 01:42:32 it's not really, once you get used to it, it's just a hurdle when moving from Scheme to CL 01:43:02 if the book is worthy learning, I'll give it a try if I find any book at a good price 01:43:07 chupish: thanks again. 01:43:13 of course 01:43:17 any time, & what not 01:52:38 jcowan [n=jcowan@cpe-74-68-154-18.nyc.res.rr.com] has joined #scheme 01:55:56 reprore [n=reprore@s210-234.pubnet.titech.ac.jp] has joined #scheme 02:03:39 jcowan: what do you mean, by the way, that chicken 4 has left "r5rs land"? 02:03:47 that's news to me; something orthogonal to r6rs, then? 02:03:50 -!- fishey [n=fisheyss@ool-4573344b.dyn.optonline.net] has quit [Read error: 60 (Operation timed out)] 02:04:11 No, I meant that once inside a module, there are (hypothetically) no bindings at all, not even R5RS ones. 02:04:21 You are in an empty environment at that point. 02:06:44 But yes, Chicken modules are not R6RS modules at all. 02:06:58 I see; but presumably you would be able to build a scheme from scratch through e.g. syntax abstractions, or what's the use of such a tabula rasa? 02:07:30 Well, normally you (import scheme), but in principle you could (import r6rs) or (import cl) even. 02:07:37 Interesting 02:07:57 jonrafkind [n=jon@c-98-202-86-149.hsd1.ut.comcast.net] has joined #scheme 02:08:34 -!- underspecified_ [n=eric@softbank220043052007.bbtec.net] has quit [] 02:09:45 The scheme.import.scm file invokes an internal procedure ##sys#register-primitive-module 02:10:36 -!- reprore [n=reprore@s210-234.pubnet.titech.ac.jp] has quit [Remote closed the connection] 02:10:50 and passes it 'scheme, a list of R5RS functions, and the object ##sys#default-macro-environment, 02:11:10 which contains a bunch of derived syntax. So apparently primitive syntax *is* available even in the supposedly empty env. 02:16:00 thesnowdog [i=thesnowd@114.73.17.121] has joined #scheme 02:16:32 fishey [n=fisheyss@ool-4573344b.dyn.optonline.net] has joined #scheme 02:18:49 -!- jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Read error: 113 (No route to host)] 02:30:40 raikov [i=cbb5f30b@gateway/web/ajax/mibbit.com/x-67232cdc2c13f217] has joined #scheme 02:31:33 guys, at that level the chicken module system has a bunch of holes in it; it's not worth playing games with the scheme import 02:31:59 AtnNn [n=welcome@modemcable087.62-56-74.mc.videotron.ca] has joined #scheme 02:32:38 Not suprising. 02:33:40 -!- fishey [n=fisheyss@ool-4573344b.dyn.optonline.net] has quit [Remote closed the connection] 02:37:43 -!- AtnNn [n=welcome@modemcable087.62-56-74.mc.videotron.ca] has quit ["foo"] 02:37:58 *eli* almost feels sorry for people who get caught in the ER web of lies 02:39:11 It's just Larceny & Ypsilon is RSN, da? 02:42:05 eli: what about syntactic closures? 02:42:07 *jcowan* does feel sorry for people who get caught in the syntax-case nightmare 02:43:02 meh, closures are hard, let's go shopping 02:43:15 or switch to using PVTS as the basis of all future scheme projects... 02:44:01 jcowan: why a nightmare? 02:44:15 See foof's long explanation. 02:44:26 But really I think that anything other than syntax-rules is Teh Scary. 02:44:35 do i have to scroll up? 02:45:12 i find syntax-rules scary, especially stuff like foof-loop 02:45:19 no, it's in c.l.s 02:45:30 foof-loop is pretty extreme, I agree 02:45:36 Not sure what this discussion has to do with explicit renaming, but okay. 02:46:33 i prefer syntax-case over syntax-rules for anything but the most trivial cases 02:46:43 Well, there are two problems with non-hygienic macros: you need to apply discipline in how you write them, *and* you are going to get hosed one day by the lack of hygiene. 02:46:59 e-r solves the second but not the first 02:48:05 syntax-rules trades discipline for lack of power and corresponding obfuscation. So? 02:48:15 jcowan: Does ER require you to maintain hygiene, rather than being hygeniec by default and making you break hygiene explicitly? 02:49:12 Still not sure what the Chicken module system has to do with the 'ER web of lies'. 02:50:16 And I am not sure that Scheme is the best place to be if you want to let programmers without discipline play. 02:50:38 arcfide: Yes 02:50:40 java or visual basic is better for that :p 02:51:04 compile till it stops complaining, try run 02:51:28 No, that's Haskell. 02:51:45 It will complain for a lot longer, but after that it is C-fast or better. 02:52:12 A friend of mine said, "The thing about Haskell is, it's type system is so *BLEEP* hard, that by the time you get it to type check, you've figured everything out." 02:52:27 jcowan: Eh? Not for the programs I have seen. 02:52:30 AtnNn [n=welcome@modemcable087.62-56-74.mc.videotron.ca] has joined #scheme 02:52:45 i find that is bad if you cant code fluently 02:52:59 tjafk1 [n=timj@e176216021.adsl.alicedsl.de] has joined #scheme 02:53:14 arcfide: What? Darcs is super-fast ... wait. 02:53:59 jcowan: foof's point about `syntax-case' is almost completely bogus. 02:54:06 I like Scheme because it lets me express what I want to say conisely without getting in my way. 02:54:11 s/conisely/concisely/ 02:54:42 I haven't found Haskell or most other languages to be as useful to me in that regard. Similarly, I find SYNTAX-CASE fits that bill for me as well. 02:54:43 Darcs does a lot more than supposedly comparable systems; its speed is a red herring. 02:54:54 Link to foof's SYNTAX-CASE complaints? 02:54:57 klutometis: I just read that post where someone asked how to do something, and was given a horrible defmacro-like mess only with ER. The "thank you" reply that came was pretty ironic in that light. 02:55:39 arcfide: http://lists.gnu.org/archive/html/chicken-users/2008-04/msg00013.html 02:57:19 jcowan: Can you point me to a general, available program written in Haskell that isn't just a micro-benchmark or contrived example, wherein the corresponding C program or Scheme program is slower or not much faster? 02:57:21 jcowan: I take back "almost" -- foof's points about `syntax-case' are all bogus. 02:57:37 All we need is define-macro, of course 02:57:39 :] 02:57:48 *arcfide* grabs his pitch fork. 02:58:11 Oh god, I mean we need extra soft hygienic macros 02:58:42 Wait, low level macros provide more control over s-expressions than the higher level ones? I thought that when it came to manipulating s-expressions, even SYNTAX-RULES was completely capable? Am I missing his point? 02:59:51 Syntax-rules is Turing-complete, so by definition it's capable. 03:00:05 jcowan: Yes, that was my point. 03:00:20 But if you want assembly-language programming, you know where to find it. 03:00:21 arcfide: I don't know what is the point in question, but `syntax-rules' cannot do arbitrary manipulations. 03:00:35 jcowan: Being turing complete is irrelevant. 03:00:39 How not? Doesn't it have access to the underlying bignum math? 03:00:56 That means you can encode S-expressions using Goedel numbers. 03:01:13 eli: But just with regards to manipulating an s-expression, is there something it can't do within the realm of a hygiene preserving transformation? 03:01:36 jcowan: Right, but you cannot create numerals out of thin air, therefore you will need such encodings, therefore ... run-time matters over here on earth. 03:02:16 arcfide: That depends on what you mean by "manipulating". 03:03:17 Anyhow, if you have mastery of a programming language, it lets you express what you want to say without getting in your way. 03:03:42 -!- chupish [i=182ed347@gateway/web/ajax/mibbit.com/x-880f6df8ead6ffe0] has quit ["http://www.mibbit.com ajax IRC Client"] 03:04:01 jcowan: More important than numbers is the fact that all "systems" that hook on the fact that `syntax-rules' is complete are theoretical for-fun toys. A low-level macro system lets you deal with a bunch of things that `syntax-rules' leave out completely. 03:04:04 There are master RPG and JCL programmers; their languages don't get in their way at all. 03:05:34 eli: True, but at what cost? In the limit, you wind up reducing the difference between compile time and run time to a nullity. 03:06:37 Arelius_ [n=indy@64.174.9.113] has joined #scheme 03:07:01 jcowan: cost for what? 03:07:47 Power at compile time. 03:07:58 It ceases to *be* compile time and becomes a separate phase of run time. 03:08:08 Sorry, foof, I have to agree with eli. :-) 03:08:12 -!- timj [n=timj@e176207107.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 03:08:44 syntax-rules are declarative, that's their great advantage. 03:09:26 If I want to do full-bore arbitrary program transformation, I might as well do it using a precompiler -- that is, *actually* at run time. 03:10:30 Woah...People really are hating on PLT in the Scheme Survey. :-) 03:10:44 jcowan: I'm sorry, but I have no idea what is the point you're trying to make. Your earlier point in regards to `syntax-rules' *is* effective in demonstrating that if you're limited to it, then this so called "cost" applies to `syntax-rules' just the same. 03:10:57 And I see Chez finally got an insult. 03:11:46 The "separate phase of run time" is therefore something that applies to `syntax-rules', as well as CPP, and any kind of transformation -- as well as macro-less languages. 03:13:15 -!- gnomon [n=gnomon@CPE001d60dffa5c-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Read error: 104 (Connection reset by peer)] 03:13:40 -!- Arelius [n=indy@64.174.9.113] has quit [Read error: 110 (Connection timed out)] 03:13:59 gnomon_ [n=gnomon@CPE001d60dffa5c-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 03:14:38 -!- gnomon_ is now known as gnomon 03:18:11 eli: Not so. cpp is entirely declarative; s-r is pretty much so, except (as you say) in toy programs. 03:18:26 arcfide: I think it is just because more people have tried PLT. It doesn't mean that many people who have tried PLT dislike it. 03:19:32 *arcfide* shrugs. 03:20:16 jcowan: "Declarative" is an unrelated point here. 03:20:54 You wanted to know what my point was, and I'm telling you. If you don't like it, you don't. 03:21:35 -!- Nshag [i=user@Mix-Orleans-106-2-176.w193-248.abo.wanadoo.fr] has quit [Remote closed the connection] 03:27:13 dlt_ [n=dlt@189.101.51.224] has joined #scheme 03:29:48 arcfide: The people who use Haskell in anger do so because they think it gives them a competitive advantage, so they are not all about sharing the code with you and me. 03:31:58 jcowan: Putting "declarative" in combination with some point about the lack of a compilation phase makes it a non-point. IOW, I have nothing to not like. 03:32:29 Of course you don't. I'm not trying to persuade you to adopt my viewpoint, just trying to explain it. 03:32:36 s/it/mine 03:33:02 -!- Axioplase_ is now known as Axioplase 03:34:21 -!- dlt_ [n=dlt@189.101.51.224] has quit [Remote closed the connection] 03:37:35 dlt_ [n=dlt@189.101.51.224] has joined #scheme 03:38:20 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 03:39:09 jcowan: There is no point, therefore no persuasion, in a meaningless sentence. This implies that your attempted explanation has failed. (The meaningless-ness is a byproduct of associating the "declarative" nature of a meta-language with a compile-time turning into run-time.) 03:49:10 Daemmerung [n=goetter@1133sae.mazama.net] has joined #scheme 03:49:12 syntropy [n=who@unaffiliated/syntropy] has joined #scheme 03:49:33 arcfide: and they broke the word-association-layout algorithm, too; at least we know its not scalable 03:50:50 merlincorey [i=merlin@please.dont.hax.me.mr.packetmonkey.info] has joined #scheme 03:51:37 -!- merlincorey [i=merlin@please.dont.hax.me.mr.packetmonkey.info] has left #scheme 03:52:21 -!- Lectus [n=Frederic@189.105.121.200] has quit [No route to host] 03:54:13 actually; just added splines, which should help; just need someone to submit, now, so that it refreshes 03:54:22 Heheh. 03:54:32 klutometis: You also didn't get any text graphs going or some kind of table. 03:54:38 Lynx still has trouble with the pictures. ;-) 03:55:03 Actually, a table with just the non-zero entries would be best. 03:56:35 eli: I don't think you should assume my sentences are meaningless, just because you don't get my point. I'm willing to try again, if you're willing not to flip the bozo bit. 04:00:02 arcfide: just out of curiosity, how does the follow graph look in links: http://scheme-survey.org/results.txt 04:00:17 scratch that; the lables are screwed up 04:00:19 table it is 04:03:05 with splines, the word association simultaneously resembles bucks' antlers, pubic hairs and spaghetti 04:03:19 either way, worthless; maybe i can come up with some heuristics to deal with the complexity 04:03:47 -!- synthase [n=synthase@adsl-249-96-171.mob.bellsouth.net] has quit [Connection timed out] 04:03:55 synthase [n=synthase@adsl-220-190-53.mob.bellsouth.net] has joined #scheme 04:05:12 Okay, I cast my vote of hate. Now why would anybody hate on Armpit Scheme? 04:05:34 (Has anybody ever /used/ Armpit Scheme? I only wish I had.) 04:05:53 eno__ [n=eno@adsl-70-137-140-190.dsl.snfc21.sbcglobal.net] has joined #scheme 04:05:58 incubot: on top of spaghetti, all covered with pubes -- I lost my poor antlers, when somebody spewed 04:06:00 I used to hate Info. Then my pubes came in. 04:06:06 ahaha 04:06:15 Well said. 04:06:30 -!- eno [n=eno@nslu2-linux/eno] has quit [Read error: 104 (Connection reset by peer)] 04:07:57 heh 04:12:10 jcowan: I'm not doing any bozo bit. Your claims above *seem* to mean that by being declerative, a meta language is somehow not a new phase for another level of runtime. This is not true since a declerative language still needs to be executed, therefore such a phase still exists. So -- assuming that this is your claim -- "declarative" is irrelevant, and making such a conclusion based on that is false. Falsehood im 04:12:11 plies anything, which makes false sentences meaningless. Now, either we need to discuss whether a declarative language does or does not need execution, or we're left with a claim that does not make sense to me therefore there is nothing I can say. (Or to abuse a certain known book, my reply should be "mu".) 04:13:21 Okay. In what sense does a purely declarative language (Prolog without ! or rule ordering, say) require execution? 04:13:37 In one sense, it must be executed to read its input and produce its output. 04:14:09 But because it is tightly constrained, it does not require a (finite approximation to a) Turing machine. 04:14:11 What does "still needs to be executed" mean? when? 04:15:03 -!- Kusanagi [n=Lernaean@unaffiliated/kusanagi] has quit [] 04:15:15 zbigniew: got rid of the unassociated schemes; at least it looks like a map or complex organism, now; pudenda aside 04:15:31 eli, an argument can be wrong and yet still be meaningful (otherwise how can you assert that it is wrong in the first place?) 04:15:53 still uninterpretable, though; imo 04:15:58 MichaelRaskin [n=MichaelR@213.171.48.239] has joined #scheme 04:16:22 peter_12: That is, a purely declarative language must have some sort of execution engine behind the scenes if it is to produce side effects on the real world. 04:16:50 However, what it does can be the object of analysis rather than requiring it to be treated as a black box by the compiler. 04:17:40 Declarative languages have an imperative interpretation, but arbitrary imperative languages do not, in general, have a declarative interpretation at all. They can only be interpreted by an interpreter. 04:18:31 kilimanjaro: The meaning can be in a discussion of whther the argument is wrong; but if you assume a wrong argument, and continue with more arguments based on that, then this argument itself becomes meaningless. This is a very simple property of falsehood. 04:18:47 kilimanjaro: That's the essence of the "Have you stopped beating your wife?" semi-joke. 04:19:10 Syntax-rules, when not applied insanely, are a declarative language. 04:19:14 eli, human discourse is not a deductive system 04:19:22 klutometis: show me your rats' nest, when you will 04:19:32 -!- luz [n=davids@189.122.121.232] has quit ["Client exiting"] 04:19:37 If I knew how to limit them so they were unquestionably declarative, I'd favor that. 04:19:44 kilimanjaro: Human discourse about *formal* subject, is, well, subject to formal reasoning rules. 04:19:47 jcowan: Yes, that's (reading input and producing output) a minimal requirement. But to get this back to the focus of `syntax-rules' -- it is a declarative template rewriting language, yet it is TM-complete (as you began with) -- that's a definitive indication that there is execution involved. (The same holds for prolog as well as any rewriting system that is computationally complete.) 04:21:06 Let me say, then, that I prefer to use only such rewriting systems (on Scheme code) as are declarative. 04:21:19 A reasonable subset of syntax-rules has that property. 04:21:33 Kusanagi [n=Lernaean@unaffiliated/kusanagi] has joined #scheme 04:21:55 jcowan: IIUC, your subset is one where recursive macros are forbidden. 04:22:22 I'm reminded of http://www.cs.mu.oz.au/~rafe/sexlogic.html 04:24:36 Actually, I think primitive-recursive macros are safe. 04:25:10 kilimanjaro: thank you. i needed to read that. 04:26:55 synthase, my pleasure. 04:27:41 I do not go so far as to say, as some do, that only primitive-recursive *procedures* should be allowed, however. 04:29:02 In any case, my grandson calls: he wants to go to sleep. 04:29:09 -!- jcowan [n=jcowan@cpe-74-68-154-18.nyc.res.rr.com] has quit ["Bailing out"] 04:29:19 reprore [n=reprore@s210-234.pubnet.titech.ac.jp] has joined #scheme 04:30:01 does anyone know where I might find a prescheme compiler that isn't related to scheme48? 04:30:43 syntropy, the only one I know of us the one that is packaged with scheme48 04:31:11 is there something like an erdos number for offspring? 04:31:30 It runs on scheme48 but iirc there is not really any other coupling to the system. I have used it before without issues 04:31:58 hmm. I read the paper on it, it's a neat idea. I had some thoughts about it regarding compilation to C and a specific method of tail-recursion... 04:33:28 i tried it out for a while as a C alternative 04:34:28 it's fairly modular and easy to understand, it was not difficult to add in extra datatypes (iirc out of the box it only supports double floating point and machine word integers) 04:34:34 for numeric types 04:35:03 mhmm 04:36:44 I've been thinking a lot about where on-the-metal schemes have gone wrong and had some thoughts to try out, but I don't claim to be an expert on anything. One of the major things I think that can be a problem is that all the implementations I've seen load scheme code from a medium. I think compilation to a binary is a better idea. 04:39:17 are string ports part of any Scheme standard? 04:45:02 foof: What is all the fuss about using huff symbols? 04:46:28 syntropy: What do you mean implementations load scheme code from a medium? 04:47:01 arcfide: as in, set up a typical bootstrap and then load (define statements from a 'floppy' or other image 04:47:14 that's what DreamOS does...it's a horrible hack tbh 04:47:37 Armpit is an educational tool that requires basically the same thing. 04:47:48 You are not talking about Schemes in general, but Schemes written to run without OSes? 04:48:10 Oops, time to eat. 04:48:11 :) 04:48:15 *arcfide* leaves for food. 04:50:37 syntropy, quite a few schemes allow for modules to be stored in some sort of compiled form 04:50:45 for fast loading 04:51:39 kilimanjaro: exactly my point, just not ones that are on the metal because it starts getting hazy to dynamically load in an on-the-metal environment 04:52:14 kilimanjaro: but compilation into a single independent binary would be neat i think 04:55:40 What is the goal of an "on-the-metal" system? 04:57:50 kilimanjaro: in a nutshell, scheme as an operating system kernel 04:57:57 *syntropy* hides before people go nuts on him 05:04:54 ziggurat [n=quassel@pool-173-71-21-9.dllstx.fios.verizon.net] has joined #scheme 05:06:06 -!- ziggurat [n=quassel@pool-173-71-21-9.dllstx.fios.verizon.net] has quit [Remote closed the connection] 05:31:42 by the time my parser recognizes a , it has an extra lookahead token on the stack; 05:32:07 would it be legitimate, when implementing READ, to have the parser instruct the lexer to rewind the input stream? 05:32:49 seems a waste to have to re-lex a token after every READ, though 05:50:43 -!- r0bby [n=wakawaka@guifications/user/r0bby] has quit [Connection timed out] 05:55:16 eek 05:55:32 Have a dequeue 05:55:39 Or something like that 05:56:34 (peek stream) ;; returns top of (embedded) stack, or lex a token 05:57:01 (unpeek token stream) ;; put token on top of stack, do not touch the stream 05:57:04 There you go. 05:57:17 So, anyone who knows parscheme around? 05:57:40 nope. 05:57:54 Is there an easy way to do nested bracketed parsing? Riastradh? 05:58:16 ejs [n=eugen@241-212-178-94.pool.ukrtel.net] has joined #scheme 05:59:02 Axioplase: nice; that's exactly what i ended up doing 06:02:20 lowlycoder [n=x@unaffiliated/lowlycoder] has joined #scheme 06:02:38 (unlike what some could infer for my second line, it's not a dequeue by the way) 06:03:05 this is OT; but i don't know who else to ask -- what's the best way to learn APL? the SICP of APL? I'm writing a scheme interpreter, and I want to steal some features from APL. Thanks 06:03:28 .... 06:03:50 Though an LR parser should not backtrack at all and thus, your problem should disappear :) 06:04:12 lowlycoder: wow. Err, read the page of the "official" GNU APL interpreter. 06:05:12 lowlycoder: if you know the features you want to steal then what's to learn? ;-) 06:05:55 i dont' know the features I want to steal; I want to learn how it's terse syntax works 06:06:48 syntax. pfft. ;-) 06:07:25 "its" 06:07:47 lowlycoder: the answer, of course, is to do SICP in APL. QED. 06:08:23 a lot of people in irc really seem to care about informing others of the difference between "its" and "it's". The whole thing is based on an irregularity/error in the English language design. 06:08:36 lowlycoder: Learn J instead 06:10:28 -!- soupdragon [n=f@amcant.demon.co.uk] has quit ["Leaving"] 06:10:37 -!- syntropy [n=who@unaffiliated/syntropy] has left #scheme 06:10:45 I gotta say, foof's code in Chibi Scheme is impressively clean so far. 06:14:22 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [] 06:17:36 -!- reprore [n=reprore@s210-234.pubnet.titech.ac.jp] has quit [Remote closed the connection] 06:22:28 ikaros [n=ikaros@f051052053.adsl.alicedsl.de] has joined #scheme 06:23:09 peter_12: you're right, though, that "it's" as a genitive was retained until the 19th c.; on the other hand, english is one big fucking irregularity: no need to start showing favoritism now. 06:23:53 goes with the territory when speaking a gallo-teutonic pidgin 06:29:37 lowlycoder, have you read the J Incunabulum? 06:30:01 lowlycoder, you may also want to read Aubrey Jaffer's work - he's a big proponent of bring Scheme closer to APL. Just read his SRFIs. 06:30:35 There's also Ken Howland: he created and documented a system called APROL which allowed Scheme code to call into J and vice-versa, though to the best of my knowledge he never released a full system. 06:31:15 Howland also wrote most, if not all, of a pretty good introductory textbook that presented all its examples in both Scheme and J. It made for a nice Rosetta stone thingy. 06:33:23 Yeah, I care about its/it's because it's damn wrong and does not fit with the "inattention/typed-too-fast" errors. Just like "your/you're". (And similar errors in other languages I know. Just *painful* for my brain to parse that) 06:33:27 -!- arcfide [n=arcfide@adsl-99-14-211-141.dsl.bltnin.sbcglobal.net] has quit ["SLEEP"] 06:35:25 is the "introduction to j" available on-line? 06:38:59 -!- ejs [n=eugen@241-212-178-94.pool.ukrtel.net] has quit ["This computer has gone to sleep"] 06:43:11 jedc [n=jed1@c-98-232-225-102.hsd1.or.comcast.net] has joined #scheme 06:52:21 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 06:57:50 ASau [n=user@77.246.230.248] has joined #scheme 06:58:19 ASau` [n=user@77.246.230.246] has joined #scheme 07:01:47 hkBst [n=hkBst@gentoo/developer/hkbst] has joined #scheme 07:04:25 mmc [n=mima@esprx01x.nokia.com] has joined #scheme 07:05:44 wingo [n=wingo@243.Red-88-17-204.dynamicIP.rima-tde.net] has joined #scheme 07:06:56 -!- npe [i=npe@d54C450C4.access.telenet.be] has quit [Read error: 110 (Connection timed out)] 07:07:42 eli: Some of the points I made are of course debatable. 07:08:28 For example, in 1) I complain it has a large API. Since the API is larger than any other alternative low-level hygienic macro system, I think it's a fair assessment. 07:11:30 In idiomatic syntax-case uses you always destructure with syntax-case, so 2) is a reasonable claim. You can do something like your blog post and recursively unwrap every expression with syntax->datum, but there's no standard utility for this, it's relatively awkward, and is asymptotically slower. 07:13:18 In 3) I understated my case - it's actually *impossible* to play along with alternate macro systems, because it hard-codes the type signature to every macro transformer. I was leaving room for superhuman compatibility efforts that no sane person would ever implement. 07:14:43 athos [n=philipp@92.250.250.68] has joined #scheme 07:16:52 -!- Lemonator [n=kniu@pool-71-107-56-85.lsanca.dsl-w.verizon.net] has quit [Read error: 60 (Operation timed out)] 07:17:59 By 4) I did not mean to imply there was anything unhygienic going on, and am sorry some people have gotten that impression. To me the interaction between SYNTAX-CASE and SYNTAX is very confusing, as it refers either to some dynamic binding in the macro expander environment, or to some inserted lexical binding. 07:20:04 And I can debate 5) forever, but the simple fact that it makes certain classes of macro that previously were possible, impossible, is a pretty strong argument. Why voluntarily take away power from macro programmers, for a syntactic sugar hack that doesn't gain any expressitivity (in terms of Fellesein expressitivity)? 07:22:35 -!- mmc [n=mima@esprx01x.nokia.com] has quit ["Leaving."] 07:23:44 Hey I found this great little 5 minute talk on Scheme and its macrology. foof, you might find Sussman's points about SYNTAX-CASE interesting: http://files.getdropbox.com/u/734346/The_Scheme_Programming_Language-Sussman_et_al.mp3 07:23:46 -rudybot_:#scheme- http://tinyurl.com/mgjl7t 07:24:10 CESSMASTER [n=CESSMAST@unaffiliated/joelywoely] has joined #scheme 07:24:54 mmc [n=mima@esprx02x.nokia.com] has joined #scheme 07:26:48 ... Hanson? 07:27:17 Chris Hanson? 07:27:40 the MIT scheme dev? 07:27:41 foof: what is this about? 07:28:47 That mp3 is a Hanson song. 07:30:31 -!- GreyLensman [n=ray@c-76-109-2-157.hsd1.fl.comcast.net] has left #scheme 07:30:49 -!- wingo [n=wingo@243.Red-88-17-204.dynamicIP.rima-tde.net] has quit [Read error: 113 (No route to host)] 07:32:24 CESSMASTER, how can anyone take E-40 seriously 07:32:26 Lemonator [n=kniu@pool-71-107-56-85.lsanca.dsl-w.verizon.net] has joined #scheme 07:32:41 E-40? 07:32:53 He meant SRFI-40 07:32:59 40 water aint no joke 07:33:31 foof, sorry, wrong channel 07:34:19 ikaros_ [n=ikaros@e179084024.adsl.alicedsl.de] has joined #scheme 07:36:11 gaetano [n=gaetano@host212-109-dynamic.52-79-r.retail.telecomitalia.it] has joined #scheme 07:36:48 -!- gaetano [n=gaetano@host212-109-dynamic.52-79-r.retail.telecomitalia.it] has quit [Client Quit] 07:39:08 foof: where is your new rant against syntax-case? 07:39:36 It's an old rant. I'm preparing a new rant for R7RS discussion ;) 07:39:53 http://lists.gnu.org/archive/html/chicken-users/2008-04/msg00013.html 07:45:53 -!- dlt_ [n=dlt@189.101.51.224] has quit [Read error: 60 (Operation timed out)] 07:46:51 ah yeah, that one. Very insightful. 07:48:47 -!- ikaros [n=ikaros@f051052053.adsl.alicedsl.de] has quit [Read error: 104 (Connection reset by peer)] 07:50:59 ejs [n=eugen@77.222.151.102] has joined #scheme 07:52:00 foof: Nice post. 07:56:46 -!- ejs [n=eugen@77.222.151.102] has quit [Read error: 60 (Operation timed out)] 07:57:07 ejs [n=eugen@nat.ironport.com] has joined #scheme 07:58:05 -!- raikov [i=cbb5f30b@gateway/web/ajax/mibbit.com/x-67232cdc2c13f217] has quit ["http://www.mibbit.com ajax IRC Client"] 08:00:52 dlt_ [n=dlt@189.101.51.224] has joined #scheme 08:10:33 npe [n=npe@195.207.5.2] has joined #scheme 08:10:45 -!- ikaros_ [n=ikaros@e179084024.adsl.alicedsl.de] has quit ["Leave the magic to Houdini"] 08:11:02 pierpa [n=user@host202-182-static.80-94-b.business.telecomitalia.it] has joined #scheme 08:25:06 -!- kilimanjaro [n=kilimanj@70.116.95.163] has quit [Remote closed the connection] 08:25:14 -!- Adrinael [n=adrinael@barrel.rolli.org] has quit [Read error: 60 (Operation timed out)] 08:25:39 -!- mhoran [n=mhoran@2607:f2f8:500:0:0:0:0:2] has quit [Read error: 60 (Operation timed out)] 08:26:52 Adrinael [n=adrinael@barrel.rolli.org] has joined #scheme 08:26:54 -!- hkBst [n=hkBst@gentoo/developer/hkbst] has quit [Remote closed the connection] 08:27:02 mhoran [n=mhoran@2607:f2f8:500:0:0:0:0:2] has joined #scheme 08:35:24 underspecified_ [n=eric@softbank220043052007.bbtec.net] has joined #scheme 08:39:00 Judofyr [n=Judofyr@c2391BF51.dhcp.bluecom.no] has joined #scheme 08:50:02 pfo [n=pfo@chello084114049188.14.vie.surfer.at] has joined #scheme 08:58:49 -!- Joelbyte [n=user@h-62-90.A163.priv.bahnhof.se] has left #scheme 09:01:38 Mr-Cat [n=Miranda@hermes.lanit.ru] has joined #scheme 09:01:50 -!- Axioplase is now known as Axioplase_ 09:05:25 alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has joined #scheme 09:05:39 jao` [n=jao@249.Red-88-18-102.staticIP.rima-tde.net] has joined #scheme 09:08:05 -!- jao` [n=jao@249.Red-88-18-102.staticIP.rima-tde.net] has quit [Client Quit] 09:10:50 fnord123 [n=fnord123@host81-151-196-168.range81-151.btcentralplus.com] has joined #scheme 09:16:55 ejs1 [n=eugen@nat.ironport.com] has joined #scheme 09:23:12 -!- synthase [n=synthase@adsl-220-190-53.mob.bellsouth.net] has quit [Read error: 110 (Connection timed out)] 09:26:02 -!- ejs [n=eugen@nat.ironport.com] has quit [Read error: 110 (Connection timed out)] 09:28:56 -!- jao [n=jao@249.Red-88-18-102.staticIP.rima-tde.net] has quit [Read error: 110 (Connection timed out)] 09:30:12 -!- athos [n=philipp@92.250.250.68] has quit ["leaving"] 09:31:57 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit ["leaving"] 09:41:49 gnomon_ [n=gnomon@CPE001d60dffa5c-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 09:43:51 -!- gnomon [n=gnomon@CPE001d60dffa5c-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Read error: 104 (Connection reset by peer)] 09:45:12 jewel [n=jewel@dsl-242-134-212.telkomadsl.co.za] has joined #scheme 09:51:04 elias` [n=c@unaffiliated/elias/x-342423] has joined #scheme 10:02:21 barney [n=bernhard@p549A1C90.dip0.t-ipconnect.de] has joined #scheme 10:07:10 alaricsp1 [n=alaricsp@88-202-202-163.rdns.as8401.net] has joined #scheme 10:07:10 -!- alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has quit [Read error: 104 (Connection reset by peer)] 10:07:44 alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has joined #scheme 10:13:21 BW^- [n=Miranda@151.80.202.201] has joined #scheme 10:13:22 -!- dlt_ [n=dlt@189.101.51.224] has quit ["Leaving"] 10:15:06 what's generally the best way to serialize cyclic lists? 10:15:35 i mean, make string of cyclic sexp, i.e. using (write) or alike 10:15:51 see SRFI-38 10:17:52 BW^-4376 [i=Miranda@151.80.76.49] has joined #scheme 10:21:01 what's best way serialize cyclic list? 10:22:01 -!- thesnowdog [i=thesnowd@114.73.17.121] has quit [Read error: 60 (Operation timed out)] 10:24:38 -!- alaricsp1 [n=alaricsp@88-202-202-163.rdns.as8401.net] has quit [Read error: 110 (Connection timed out)] 10:27:15 -!- Arelius_ is now known as Arelius 10:29:13 noone? :) 10:29:22 by flattening it maybe? 10:29:35 foof said SRFI 38 10:29:49 ah 10:35:28 foof: http://tmp.barzilay.org/foof.txt 10:39:12 vgeddes [n=vgeddes@dsl-245-176-107.telkomadsl.co.za] has joined #scheme 10:41:42 eli: For point 3), in psyntax and PLT and R6RS and every syntax-case implementation I'm aware of, you define macros as: (define-syntax foo (lambda (stx) ...)) 10:41:51 -!- lowlycoder [n=x@unaffiliated/lowlycoder] has quit ["leaving"] 10:42:46 That's what I mean by hard-coding the type signature - it's explicitly specifying that a macro is a procedure of a single argument, which makes it incompatible with other macro systems. 10:42:52 -!- alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has quit [Remote closed the connection] 10:43:12 alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has joined #scheme 10:43:43 In ER and SC macro systems, the syntax is (define-syntax foo (er-macro-transformer ...)) leaving the actual representation and type signature of the transformer as an implementation detail. 10:44:16 For syntax-case to play nicely with others it would need a syntax such as (define-syntax foo (syntax-case-transformer (lambda (stx) ...))) 10:44:41 -!- arthurmaciel [n=user@189.100.89.17] has quit [Read error: 110 (Connection timed out)] 10:45:27 -!- BW^- [n=Miranda@151.80.202.201] has quit [Read error: 110 (Connection timed out)] 10:47:30 wouldnt that just be a change in the define-syntax macro itself 10:49:01 foof: This is, like I said in my reply, something "which `define-syntax' dictates". Absolutely unrelated to `syntax-case'. (And the confusion in what you say is evident in lumping `define-syntax' with `er-macro-transformer' as "the syntax".) 10:49:37 MrFahrenheit [n=RageOfTh@92.36.164.170] has joined #scheme 10:49:56 eli: You're misunderstanding, so perhaps I'm explaining badly. It's just so exceedingly obvious to me. 10:49:57 leppie: That's roughly right, except that `define-syntax' is not really a macro. 10:50:43 foof: I see nothing exceedingly obvious about this point, except for how it's a broken argument when applied to `syntax-case'. 10:50:56 (define-syntax foo (lambda (stx) ...)) exposes an implementation detail. Simply wrapping the transformer in something like er-macro-transformer hides that detail, allowing a wider range of implementations. 10:52:57 My Scheme implementation supports er-, sc- and rsc- macro transformers, and can be easily extended with additional transformers at the user level. It is, however, *impossible* for me to support syntax-case without rewriting the whole macro implementation. 10:53:03 foof: Still broken. `define-syntax' dictates a syntax to syntax function, period. ER and SC systems need to have a wrapper adjust your function to that protocol, whereas a `syntax-case' system uses the protocol directly. 10:53:22 However, if I were motivated I could provide a syntax-case-macro-transformer option. 10:53:47 foof: In that case, your `define-syntax' *is* broken. 10:53:56 srfi-38... aha, that's where plt repl's representation of cyclic lists comes from 10:54:00 Huh? What's "broken"? 10:54:55 foof: If your `define-syntax' doesn't expect a syntax->syntax function, then it's not a correct implementation of `define-syntax'. That has nothing to do with `syntax-case', SC, or ER. 10:55:41 It _does_ expect a syntax->syntax function. 10:56:09 The representation of the syntax objects is an implementation detail. I prefer to keep it that way. 10:57:16 I'm sorry, but your argument on this point is so completely alien to me I just can't fathom it. I have no idea what could possibly be going through your mind. 10:57:57 I want to make an implementation detail opaque, to allow more implementations and easier extension to new macros. 10:58:01 You want to forbid this. 10:58:03 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 10:58:29 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Read error: 60 (Operation timed out)] 11:00:06 All syntax-case has to do is one little thing - use a wrapper to distinguish itself as a syntax-case macro - and it can play well with other systems. 11:00:14 foof: So the problem, if any, is in your own representation that is somehow supposed to be incompatible with `syntax-case'. The "hard coded type signature" is therefore the same in your system, it's only the type of syntax values that youre debating -- but whatever representation you choose for syntax values is something that you'll need to interface anyway. A `syntax-case' implementation for your system will need 11:00:14 to interface your representation, of course -- but that has nothing in relation to hard-coding an interface. 11:00:15 What is so horrible about that? 11:00:17 what's the best "flatten" and "unflatten" methods for lists? 11:00:38 SRFI 38 flattens a list into a string and the other way around. but, what about to a list structure? 11:00:41 eli: No, it's different because my type signature is hidden and I don't expose it to anyone. 11:01:42 eli: Are you perhaps tired right now? You must not be thinking clearly. 11:01:53 Or have you just never used a syntactic-closure based macro system? 11:02:08 foof: That's exactly the case with `syntax-case'. It can (and does, as evident by the different implementation) work with different representations. 11:02:25 I'm thinking very clearly now, thankyouverymuch. 11:03:41 For example, I can use Ikarus's `syntax-case', over some values that print as # -- I know nothing about that type and what to do with it, so I interact with it through `syntax-case'. The representation is *still* very much opaque to me. 11:03:58 (And clearly incompatible with the representation in PLT.) 11:04:00 Hiato [n=Hiato@dsl-245-14-154.telkomadsl.co.za] has joined #scheme 11:04:28 ejs2 [n=eugen@nat.ironport.com] has joined #scheme 11:05:39 ? 11:05:52 The syntax object implementation is opaque. The type signature of the macro transformer is not. 11:07:28 What is so wrong with hiding the type signature? You lose nothing, you gain interoperability. 11:08:56 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [] 11:09:44 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 11:09:55 BW^-4376: IIUC converting to a string is the essence of external representation. Srfi-38 defines external representation for cyclic lists, is not that enough for serialization? 11:10:11 foof: That's just completely bogus. The type itself is opaque. Like I said, I know nothing about the syntax values used in Ikarus besides the fact that they are "syntax values". I have no idea how else to explain this, it should be obvious to anyone with basic knowledge of type systems. In an ML-like world, nothing is exposed except for a `Syntax' type, and API functions on that type -- which is an extremely popu 11:10:11 lar implementation pattern. 11:10:18 mr-cat: yes you are right. 11:10:25 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [Client Quit] 11:10:37 mr-cat: in case i need more performance, i should simply optimize the srfi 38 implementation. 11:10:38 The type of the _transformer_ is not opaque, it's a lambda of one argument. 11:11:30 -!- alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has quit ["Leaving."] 11:14:15 -!- ejs1 [n=eugen@nat.ironport.com] has quit [Read error: 110 (Connection timed out)] 11:16:39 alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has joined #scheme 11:17:41 foof: Yes, the type of the transformer is `Syntax -> Syntax'. That much is needed for every transformer. The actual representation used is completely free -- it is the job of `syntax-case' to work with whatever `Syntax' is, in exactly the same way that `er-macro-transformer' needs to work with it. The fact that the latter actually works with functions over the syntax has nothing to do with the "abstractness" of th 11:17:41 e type representation. 11:17:49 -!- eli [n=eli@winooski.ccs.neu.edu] has left #scheme 11:18:14 eli [n=eli@winooski.ccs.neu.edu] has joined #scheme 11:19:06 eli: A "syntax object" is an abstract concept, which happens to be more naturally represented as separate values in some implementations. 11:19:46 More generally, a syntax system may want to allow additional utilities (e.g. A macro history buffer) for some special-purpose transformers. 11:20:51 Edico [n=Edico@unaffiliated/edico] has joined #scheme 11:21:02 By making the type signature of the macro transformer opaque, you give the implementer freedom to choose whatever representation and extensions best suit him, *without* restricting other systems in any way. 11:22:29 So what's so horrible with allowing freedom of implementation and extension? 11:22:49 It doesn't restrict syntax-case in any way. 11:25:58 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 11:26:32 *alaricsp* joins the debate 11:27:04 The thing about (lambda (...) ...) rather than (make-foo-macro ...) is that only *one* macro system can do the former. As soon as one claims the basic lambda syntax, nobody else can distinguish themselves. 11:27:32 If everyone does the latter, then there's no collision unless you pick a stupid name, and hey, we already have 'scopes' for managing that 11:27:39 -!- sphex_ [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Read error: 60 (Operation timed out)] 11:28:24 So, one macro system claiming bare lambdas as its representation isn't in itself harmful 11:28:34 But it means that no other can 11:28:42 THereby elevating that macro system to somehow being special 11:28:43 When it's not 11:32:39 -!- gnomon_ [n=gnomon@CPE001d60dffa5c-CM000f9f776f96.cpe.net.cable.rogers.com] has quit [Read error: 60 (Operation timed out)] 11:32:45 -!- rdd [n=rdd@c83-250-157-93.bredband.comhem.se] has quit [Connection timed out] 11:32:50 gnomon [n=gnomon@CPE001d60dffa5c-CM000f9f776f96.cpe.net.cable.rogers.com] has joined #scheme 11:34:50 alaricsp: No, *all* macro systems use "lambda as their representation". 11:35:03 foof: Yes, a "syntax object" is an abstract concept -- that holds for all macro systems, *including* `syntax-case'. In fact, it is `syntax-case' itself that makes it abstract. 11:35:04 benny99 [n=benny@p5486E859.dip.t-dialin.net] has joined #scheme 11:35:20 foof: There is of course nothing horrible in allowing freedom of implementation -- and that *is* what you get through the single `Syntax -> Syntax' protocol of `define-syntax'. To implement any macro system you need to choose your syntax representation for these kind of values -- and then you need to provide tools for your programmers to use it. 11:35:34 foof: These tools can be an ER interface, an SC interface, `syntax-case', or something completely different. 11:35:40 foof: A concern for you, as the implementor, is to make it possible to represent some commonly known API (or convince people that your new API is worth using). With `syntax-case' you get ER and SC for free since they're expressible within it. 11:36:01 eli: No, with a hard-coded type signature of one value I do *not* have freedom of implementation or extension. 11:36:21 foof: It sounds like whatever representation you happened to choose for your own implementation is difficult or impossible to wrap in a `syntax-case' API, that's too bad for you, but ultimately unrelated to `syntax-case'. 11:36:24 I'm not allowed to separate syntax objects from their environments. 11:36:56 benny99_ [n=benny@p5486E859.dip.t-dialin.net] has joined #scheme 11:37:16 I'm not allowed to pass additional info or debugging utils to macro transformers. 11:38:33 That's true for ER/SC macros too. 11:39:28 No, it isn't. I can add those extensions to my macro system, revise just the definitions of er/sc-macro-transformer, and my users are unaffected. 11:39:56 What do ER and SC mean? 11:40:12 pbusser2: Explicit Renaming and Syntax Case (the macro systems) 11:40:21 Ok. Thanks! 11:40:23 Sorry, Syntactic Closures 11:40:44 foof: I can just the same add some wrapper to functions using `syntax-case' -- such a wrapper has absolutely nothing to do with `syntax-case' itself, and indeed it would not depend on whether `syntax-case' is ever used in the body. 11:40:54 If you wanted to do the same for syntax-case, would you tell all your users "oh, in PLTv5 we're adding a history buffer to all macros, so just replace every instance of (define-syntax foo (lambda (stx) ...)) with (lambda (stx hist) ...). 11:40:56 Syntax Case is what foof's arguing about. citing Explicit Renaming and Syntactic Closures as having a more encapsulated API 11:40:57 ER is what is used in CL, isn't it? 11:41:28 CL doesn't have hygienic macros, but ER is IIRC the one that *looks most* like CL macros ;-) 11:41:53 foof: No, I would tell then that if they want to benefit from whatever I added, then their macros should use whatever function I wrote to implement my addition. That's the same as with any other value. 11:42:12 alaricsp: Yeah I know CL doesn't known hygienic macros. I understood that there was a gensyms function which simulated them though. 11:42:21 foof: For example, a mutable cons cell with a recorded history of mutations would be done in much the same way. 11:42:29 gensym helps with one of the problems with unhygienic macros, but not the other 11:42:38 alaricsp: I see. 11:42:52 Namely, if your macro uses (eg) if, and you call it in a context where some nutter has defined if to mean +, then your macro breaks 11:43:01 Except that this can happen with less obvious things than if! 11:43:25 What if the information was not naturally available in the syntax object itself? You would artificially put it into the syntax object on every macro expansion? 11:43:27 alaricsp: So you need to preserve the environment as well? 11:44:05 pbusser2: Pretty much, yes. Most hygienic macro systems, to some extent, work by dragging an environment along with symbols. Or can be thought of as working that way even if they do something else under the covers, I think. 11:44:24 alaricsp: Ok. 11:44:25 foof: Yes -- that's precisely due to the Syntax type being abstract. 11:45:28 Even if the information really has nothing to do with the syntax object itself, like in this example the history of the past N macro expansions? 11:45:30 foof: I have no idea how it's represented, or if it even makes sense to add more properties to it, for all I know a Scheme system might use pointers into the source code to represent syntax -- that representation is completely up to the implementation. 11:46:23 But whatever it is, the syntax information *must* absolutely be bound up in a single object? Forcing mutation for some situations better handled functionally? 11:47:28 And anyone who even _thinks_ about alternate ways of implementing syntax is a heritic, and it's not worth even considering making it easier to interoperate with them, even at zero cost to yourself? 11:48:16 foof: The syntax information might be bound by a single object or it might be recorded externally, or in the case of history it can be recorded elsewhere -- that's still unrelated to `syntax-case'. 11:49:13 foof: How you get to that conclusion is beyond me. The *implementation* has a certain representation for syntax objects, and using a different representation is difficult because of that. How is that related in any way to `syntax-case'? 11:49:39 foof: You keep making this "zero cost" point about a problem that is just not there. 11:49:40 Because syntax-case forces the (lambda (stx) ...) prototype for all macro transformers. 11:49:55 SO DOES ALL OTHER MACRO SYSTEMS! 11:50:08 How many times should we go over that?? 11:50:10 NO THEY DON'T 11:50:19 How many times do I have to say that? 11:50:20 OK, which one isn't? 11:50:40 syntactic-closures. The type signature is opaque. 11:50:57 No, that creates a `Syntax -> Syntax' function. Next. 11:51:33 No, the type signature is opaque. It creates a macro that performs a transformation according to the sc specification. 11:51:58 No, it creates a function that consumes a syntax, and returns a syntax. Nothing else matters for `define-syntax'. 11:51:59 That is, the sc- transformer does. The syntax-rules transformer follows it's own specification. 11:52:10 eli, nothing in syntactic-closures stops the macro from being implemented as a function of many arguments, or even as a non-function object (a record with a function in it, perhaps?) 11:52:14 ikaros [n=ikaros@e179084024.adsl.alicedsl.de] has joined #scheme 11:52:17 All I want is a wrapper for syntax-case macros to distinguish them 11:52:34 `syntax-rules' also -- surprise -- creates a function from syntax to syntax. 11:53:25 foof: That just does not make sense. `define-syntax' doesn't "care" whether the function given to it is created by the SC interface, or the ER one, or if it's a function that doesn't use `syntax-case'. 11:53:43 So such a wrapper would be nonsensical. 11:53:58 A synclo macro transformer is created from a function of *two* arguments; an implementation might wish to use that as its native representation, for some reason, and then how could one implement syntax-case on top of it? 11:54:41 Let me put it this way - why do you want to forbid macro transformers from being allowed to take multiple values as an implementation detail, behind the scenes? 11:55:15 -!- benny99 [n=benny@p5486E859.dip.t-dialin.net] has quit [Read error: 113 (No route to host)] 11:55:27 I don't -- in that case I will need a wrapper to adjust it to the `define-syntax' interface. 11:55:46 rudybot_: eval (define-syntax foo (lambda (stx) (datum->syntax #f (list #'quote stx)))) 11:55:52 rudybot_: eval (foo 3) 11:55:53 eli: ; Value: (foo 3) 11:56:09 foof: How about that macro -- should it be marked as using `syntax-case'? 11:56:29 rudybot_: eval (define-syntax foo (lambda (stx) #'1)) 11:56:31 rudybot_: eval (foo 3) 11:56:32 eli: ; Value: 1 11:56:42 synthase [n=synthase@adsl-220-190-53.mob.bellsouth.net] has joined #scheme 11:56:42 foof: And what about that one? 11:56:51 Yes, because datum->syntax is part of the syntax-case macro system, even if it chooses not to use the syntax-case macro itself. 11:56:55 No, I mean define-syntax itself. Why should it not be allowed, as an implementation detail, to expect transformers that take multiple arguments? 11:57:31 alaricsp: No, that's just the implementation of syntax values in PLT. It is unrelated to `synatx-case' (which is defined at a much higher level). 11:57:50 foof: In that case your argument is against `define-syntax'. 11:58:13 What I think you're arguing, eli, is that the syntax-case case macro *model* of syntax objects (and macros being a function between them) is universal, and should be made the de-facto standard, regardless of whether syntax-case itself is in use. 11:58:17 So the debate isn't quite about syntax-case 11:58:32 It's about standardising an underlying model of how macro transformations operate 11:58:38 Sure, whatever, why shouldn't that be allowed? 11:58:46 And syntax-case is just a macro system that happens to mandate that model 11:58:51 But the other macro systems don't mandate that model 11:59:13 alaricsp: That's a debate against `define-syntax' -- that uh, "API", is pretty much universally accepted. 11:59:39 define-syntax doesn't define what the macro transformer is, though 11:59:47 It doesn't mandate that it's a function from syntax to syntax 11:59:53 It could be some crazy struct 11:59:57 foof: I don't know, and I don't care -- if you have an issue with `define-syntax' than you've just put yourself on the other side of the fence from 99% of the Scheme world. 11:59:59 No, the API is not universally accepted, everyone else uses an opaque wrapper, only syntax-case makes the type signature explicit. 12:00:27 alaricsp: Sure it does. It expects a function that consumes a syntax value, and returns one. 12:00:36 eli: Cite chapter and verse, please :-) 12:00:52 alaricsp: Sorry, you'll need to do your own homework. 12:01:44 I am stating the absence of a definition that a has to be a function of one argument 12:01:46 I can't prove an absence 12:01:48 foof: In that case feel free to raise whatever point you have, but it would help if you clarify that the issue you have is with `define-syntax'. 12:02:18 You're stating I'm wrong, and you *can* prove you're right by finding the definition that a is a function of one argument 12:02:55 All R5RS seems to say is "the should be an instance of syntax-rules" 12:03:00 No, my issue is with define-syntax as implemented in syntax-case systems, and _only_ in syntax-case systems, and my god I can't believe I wasted that much time trying to explain this to you. 12:03:13 alaricsp: `' is wrong -- it's an *expression*. 12:03:29 foof: That's the way it's defined in ER and SC systems too. 12:03:45 eli: Seriouly, have you _ever_ actually used ER or SC macros? 12:03:57 http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html#%_sec_5.3 doesn't say it's an expression 12:03:59 -rudybot_:#scheme- http://tinyurl.com/5mvlcw 12:04:04 Yes, and that's still irrelevant. 12:04:34 Then you know that they have a very big syntactic difference from syntax-case macros (as exist in any syntax-case impl)? 12:04:40 alaricsp: That's R5RS, where there was no decision on whether implementations should even have a low-level macro system. 12:04:57 That's the reason for the obscure "spec". 12:05:21 *eli* is about to disappear 12:05:24 foof: I have demonstrated that the type itself is as abstract as always on several levels -- by the fact that I'm able to use Ikarus, by the fact that I can represent other macro systems (and in PLT, all I need for that is to know about the syntax representation *not* about `syntax-case'). The point that you are trying to make doesn't make any sense on any level related to types that I know about, and I suspect that 12:05:24 the issue that you're having is with your own representation. Whatever your issues are, I don't know them, and I don't care for obvious reasons. I can only say that if you want that point (or any other) taken seriously by anyone then I suggest you rethink your arguments or at least your presentation of them. I have no way to convince you to do that, and I obviously don't care -- feel free to make your points as i 12:05:24 thesnowdog [i=thesnowd@114.73.10.75] has joined #scheme 12:05:25 s. It will be amusing. 12:05:33 *eli* goes *poof* 12:05:53 I'm checking R6RS, which so far says it has to be an expression that evaluates to a transformer, and I'm looking to see if there's any statement that the transformer has to be a function... 12:10:22 alaricsp: Forget it, his mind is closed, he can't conceive of anything other than syntax-case. 12:10:34 So I see :-) 12:10:54 He's a R6RS man, living in a R6RS land. 12:11:12 I wonder how R7RS is getting along 12:13:08 sepult [n=buggarag@xdsl-87-78-100-252.netcologne.de] has joined #scheme 12:14:58 I don't. 12:15:07 :) 12:17:29 -!- MrFahrenheit [n=RageOfTh@92.36.164.170] has quit [Read error: 110 (Connection timed out)] 12:19:02 this is probably a stupid question, asked a thousand times already, but: why can't I call square like ((car '(square)) 20) ? 12:19:38 rudybot_: eval ((car (list sqrt)) 20) 12:19:40 foof: your sandbox is ready 12:19:40 foof: ; Value: 4.47213595499958 12:19:46 and there's no funcall in ... ah yeah, thanks once again :) 12:20:11 it's the third time I asked that question I'm afraid :( 12:21:06 incubot: would you mind telling rudybot_ that he's stepped in an underscore? I'd tell him, but I think he'd take it better from you. 12:21:09 Seems like the double-underscore thing should be fine, at least I hope it is. Can you by any chance check if it also works with the MS compiler? 12:21:53 rudybot_ had a long weekend, it appears. 12:22:37 -!- hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has quit ["|_ e /\ \/ i |/| G"] 12:24:24 MrFahrenheit [n=RageOfTh@SE400.PPPoE-2166.sa.bih.net.ba] has joined #scheme 12:25:24 RageOfThou [n=RageOfTh@SE400.PPPoE-2262.sa.bih.net.ba] has joined #scheme 12:27:13 -!- 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"] 12:28:48 foof: That's ("can't conceive ...") a ridiculous statement, considering several points demonstrated above, including transformers that *do not* use `syntax-case'. 12:28:55 *eli* is still not here though 12:29:45 Fine, fine, s/syntax-case/define-syntax as used in syntax-case implemetations and only syntax-case implementations/g 12:34:19 ...and that's ridiculous too, for exactly the same reason mentioned. 12:35:26 Even transformers that don't use syntax-case use a hard-coded prototype of (lambda (stx) ...) in those implementations. 12:42:34 I think there's a little overloading of syntax-case going on here. If syntax-case refers only to the syntax-case syntax, what are we to call the low-level hygienic macro system that was created for its implementation? The R6RS low-level macro system? 12:43:10 -!- MrFahrenheit [n=RageOfTh@SE400.PPPoE-2166.sa.bih.net.ba] has quit [Success] 12:43:22 benny99 [n=benny@p5486E2AE.dip.t-dialin.net] has joined #scheme 12:43:43 chandler: If that were clearly specified and syntax-case relegated to a separate library I'd be much happier, but it all gets lumped together. 12:44:46 foof: You've made me obligated to re-think about everything I know and think about macros. 12:46:41 -!- benny99_ [n=benny@p5486E859.dip.t-dialin.net] has quit [Read error: 113 (No route to host)] 12:49:58 higepon61 [n=taro@FL1-125-197-200-195.tky.mesh.ad.jp] has joined #scheme 12:51:16 socket^ [n=socket@bzq-79-183-32-127.red.bezeqint.net] has joined #scheme 12:51:56 hmm, how do i define a lambda that can take any number of parameters ? something with a dot 12:52:01 hm, does somebody know how to use eval in ypsilon scheme ? 12:52:53 can't find something like (nearest-repl/environment) 12:54:22 -!- benny99 [n=benny@p5486E2AE.dip.t-dialin.net] has quit ["Leaving"] 12:54:35 benny99 [n=benny@p5486E2AE.dip.t-dialin.net] has joined #scheme 12:55:13 (sorry, got an extremely instable connection) 12:55:58 hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 12:56:00 -!- Hiato [n=Hiato@dsl-245-14-154.telkomadsl.co.za] has quit ["Leaving"] 12:56:34 -!- BW^-4376 [i=Miranda@151.80.76.49] has quit [Read error: 110 (Connection timed out)] 12:59:19 Quadrescence: The point I was trying to get through to eli was not a deep one, it's a very superficial compatibility issue. 12:59:35 But it's worth knowing that there _are_ viable alternate macro systems. 13:00:41 -!- hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has quit [Client Quit] 13:01:17 hiyuh [n=hiyuh@KD124214245222.ppp-bb.dion.ne.jp] has joined #scheme 13:02:12 foof: I actually come from Common Lisp, so I'm somewhat used to the *cough* dirty ol' defmacro 13:06:39 annodomini [n=lambda@c-75-69-96-104.hsd1.nh.comcast.net] has joined #scheme 13:06:52 dlt_ [n=dlt@201.80.197.178] has joined #scheme 13:10:05 foof: what's your SoC project about? (I understood that Scheme is just the means not the end.) 13:10:43 Well, it's Scheme on Plan 9. 13:11:23 Currently, the only Scheme that has been ported is tinyscheme, which I can only imagine would deter Plan 9 users from Scheme, so initially I'm porting Chibi-Scheme. 13:11:56 I will also add support for 9p servers, and possibly some GUI utilities. 13:13:12 Then try to polish the interface to make it more appealing for Schemers to work on Plan 9 - some sort of sane repl interaction (maybe via a 9p server), and possibly modifying the Acme behavior to select a balanced parenthetical expression when you double-click a paren. 13:13:15 foof: I can only imagine the intersection of plan9 users and scheme users to be close to empty... 13:14:08 I know two people apart from myself in that intersection, but the point is more about expanding that intersection :) 13:14:09 michaelw: Actually, both plan9 and scheme are about minimalism in a way 13:14:46 (and simplicity) 13:14:48 sjamaan: the plan9 users and developers I know probably wouldn't touch scheme with a 9-foot pole :) 13:15:05 foof: After reading your argument with eli, am I right that you are looking forward a portable way for a user to define his own new transformers? 13:15:15 I know one 9p fan personally who described scheme as a "beautiful little language" 13:15:23 then again, chicken and egg... 13:16:53 foof: any reason to run with chibi rather than s48 or ikarus, or ... (other than you being the author, that is ;))? 13:17:28 It's smaller and more portable. 13:18:01 ... and more a direct competitor to the existing tinyscheme port. 13:18:33 I actually didn't think I'd get accepted, I was a little surprised :) 13:19:39 foof: Nm 13:22:46 luz [n=davids@139.82.89.70] has joined #scheme 13:22:49 [bjoern] [n=bjoern@dslb-094-223-209-026.pools.arcor-ip.net] has joined #scheme 13:23:14 <[bjoern]> Hi. In http://homepages.nyu.edu/~cb125/Lambda/lambda.scm I don't understand the (g ()) part on line 3; could somebody explain? 13:25:03 -!- Judofyr [n=Judofyr@c2391BF51.dhcp.bluecom.no] has quit ["raise Hand, 'wave'"] 13:25:05 -!- antoszka [n=antoszka@unaffiliated/antoszka] has quit ["+++ killed by SIGSEGV +++"] 13:25:41 antoszka [n=antoszka@unaffiliated/antoszka] has joined #scheme 13:26:53 Did I miss anything interesting in the raging debate last night? 13:27:22 <[bjoern]> DrScheme rejects the code in fact; If one were to change it to (g '()) then I don't understand it either... 13:28:21 <[bjoern]> Because then (null? g) would appear to be true always. 13:28:34 jao [n=jao@74.Red-80-24-4.staticIP.rima-tde.net] has joined #scheme 13:29:59 what about the 'r' btw. ? 13:33:02 "The named let function r executes one; pass through a form." 13:33:08 <[bjoern]> That's a good question... PLT Scheme documentation says "(let proc-id ([id init-expr] ...) body ...+) ... The second form evaluates the init-exprs; the resulting values become arguments in an application of a procedure (lambda (id ...) body ...+), where proc-id is bound within the bodys to the procedure itself." 13:33:29 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 13:33:53 this is confusing. 13:35:53 I also can't access http://ling.ucsd.edu/~barker/Lambda 13:36:04 <[bjoern]> Yeah that's 404 13:36:57 <[bjoern]> (http://homepages.nyu.edu/~cb125/Lambda/ explains the code even less) 13:39:31 [bjoern]: That is named let. Roughly if defines a function r with arguments r and g and then calls it with f and '() 13:39:42 -!- stepnem [n=versme@topol.nat.praha12.net] has quit [Read error: 104 (Connection reset by peer)] 13:40:11 So, probably g won't be null? in a subsequent call to r 13:41:15 Still, this function (reduce) seems completely unreadable to me 13:42:10 langmartin [n=user@exeuntcha.tva.gov] has joined #scheme 13:43:54 -!- vgeddes [n=vgeddes@dsl-245-176-107.telkomadsl.co.za] has quit [Read error: 110 (Connection timed out)] 13:44:38 <[bjoern]> My assignment is to "extend" it by another function, whatever that means... 13:44:39 <[bjoern]> So the reason for using this syntax is that you normally cannot name lambda functions and hence not call them recursively? 13:45:25 step-by-step: (lambda (value) (if (equal? value f) f (reduce value))) <-- " Line 2: continue to process the form until there are no more conversions left." 13:46:01 Named let is a convenient shorthand for a letrec and a lambda, nothing more. 13:46:30 <[bjoern]> Good, so that part I understand, then. Thanks. 13:51:27 bombshelter13_ [n=bombshel@toronto-gw.adsl.erx01.mtlcnds.ext.distributel.net] has joined #scheme 13:51:51 -!- dudleyf [n=dudleyf@ip70-178-212-238.ks.ks.cox.net] has quit [] 13:55:13 sphex_ [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 13:57:15 -!- ejs2 [n=eugen@nat.ironport.com] has quit [Read error: 110 (Connection timed out)] 13:57:46 moghar [n=moghar@157.185.jawnet.pl] has joined #scheme 14:01:55 soupdragon [n=f@amcant.demon.co.uk] has joined #scheme 14:05:17 sphex__ [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 14:05:57 -!- Mr-Cat [n=Miranda@hermes.lanit.ru] has quit [Read error: 104 (Connection reset by peer)] 14:07:58 -!- sphex_ [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Read error: 60 (Operation timed out)] 14:08:37 foof: FWIW, I just asked Matthias about your "Fellesein expressitivity". He was ... amused. More concretely, his *first* reaction when I explained your point about identifier macros was "but that's not `syntax-case'", and when I then told him about the reference to his paper, he said "my name was mentioned in vein". 14:12:41 -!- sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 14:15:20 elias` [n=c@host86-159-170-69.range86-159.btcentralplus.com] has joined #scheme 14:15:27 annodomini [n=lambda@130.189.179.215] has joined #scheme 14:15:50 Mr-Cat [n=Miranda@hermes.lanit.ru] has joined #scheme 14:15:55 -!- sepult [n=buggarag@xdsl-87-78-100-252.netcologne.de] has quit ["leaving"] 14:17:37 eli: I will save my arguments for people who are willing to at least try to understand them. 14:17:52 -!- etoxam [n=||||||||@84.79.67.254] has quit [Connection timed out] 14:19:47 stepnem [n=stepnem@topol.nat.praha12.net] has joined #scheme 14:21:13 foof: So you know claim that Felleisen is not willing to try to understand your point about identifier macros? Or perhaps that he should do his homework and read the Felleisen expressiveness paper? Or maybe that it's like a work of literature where the readers can decide for themselves what the meaning of the paper is... 14:21:20 s/know/now/ 14:21:37 Is he there? I'd talk to him. 14:23:56 He's here. Are you in Boston? 14:24:30 No. 14:24:44 I'd be happy to discuss on IRC or via email. 14:25:48 He will definitely not come to IRC. If you want to send him an email, feel free to do so. 14:26:17 (I'm not going to promise a reply though...) 14:26:34 OK, then I won't bother. 14:27:51 Because I won't guarantee a reply? That's an odd reason. 14:29:00 At some point I'll prepare a more formal critique of the macro systems that provide syntax-case. I'll try to be a little more specific about what aspects of them are and are not directly related to the `syntax-case' syntax since that seems to confuse some people, although since those macro systems themselves don't make any clear distinction between core and optional features... 14:29:09 ... I can only go so far in doing their job for them. 14:36:02 is there a simeple way to take an integet lets say (define x 1000) and convert into a list? (list 1 0 0 0) 14:36:24 Is this a homework assignment, socket^? 14:36:47 a part of, yeah... 14:37:46 What is the first thing you would do to implement this "by hand"? 14:38:16 dont know what by hand means... 14:39:37 Manually. This is usually the first question I ask of people who are trying to implement an algorithm, only in this case it's a bit difficult since we normally write integers as a sequence of base-10 digits... 14:41:06 -!- p1dzkl [n=p1dzkl@1505ds1-str.0.fullrate.dk] has quit [Read error: 54 (Connection reset by peer)] 14:41:16 Perhaps a clearer question is: What does the string of digits `1 0 0 0' mean, and how do we interpret it as a number? 14:42:31 dudleyf [n=dudleyf@65.243.31.107] has joined #scheme 14:42:57 p1dzkl [i=p1dzkl@cl-88.cph-01.dk.sixxs.net] has joined #scheme 14:45:52 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 14:46:12 rmorris [n=user@209.120.179.205] has joined #scheme 14:47:18 sepult [n=buggarag@xdsl-87-78-100-252.netcologne.de] has joined #scheme 14:47:41 dlt__ [n=dlt@201.80.197.178] has joined #scheme 14:53:41 -!- [bjoern] [n=bjoern@dslb-094-223-209-026.pools.arcor-ip.net] has left #scheme 14:54:33 -!- Lemonator [n=kniu@pool-71-107-56-85.lsanca.dsl-w.verizon.net] has quit [Read error: 110 (Connection timed out)] 14:55:16 Lemonator [n=kniu@pool-71-107-56-85.lsanca.dsl-w.verizon.net] has joined #scheme 14:58:00 -!- dlt__ [n=dlt@201.80.197.178] has quit [Client Quit] 14:58:16 Nshag [i=user@Mix-Orleans-106-1-74.w193-248.abo.wanadoo.fr] has joined #scheme 14:58:26 http://en.wikipedia.org/wiki/Positional_number_system 14:58:55 -!- rudybot_ is now known as rudybot 15:01:08 -!- sepult [n=buggarag@xdsl-87-78-100-252.netcologne.de] has quit [Nick collision from services.] 15:01:56 sepult [n=buggarag@87.78.31.189] has joined #scheme 15:03:15 -!- dlt_ [n=dlt@201.80.197.178] has quit [Read error: 110 (Connection timed out)] 15:07:21 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [] 15:11:06 mib_c1vjl5p2 [i=d4c84113@gateway/web/ajax/mibbit.com/x-75957d3c4de2cc17] has joined #scheme 15:12:52 -!- eno__ is now known as eno 15:14:15 jlongster [n=user@c-68-59-187-95.hsd1.tn.comcast.net] has joined #scheme 15:15:05 Is there a GC technique that seems to 'work best' with Scheme? I have yet to find good information on different techniques relative to Scheme. 15:15:15 -!- joast [n=rick@76.178.184.231] has quit [Read error: 110 (Connection timed out)] 15:16:39 "Work best" is an awfully vague fitness criteria. On what kind of system? Under what kind of workload? 15:17:12 joast [n=rick@76.178.184.231] has joined #scheme 15:18:11 chandler: Does "generally", as in, 15:18:27 "most cases" work as a good criterion? 15:18:45 No. 15:19:13 -!- higepon61 [n=taro@FL1-125-197-200-195.tky.mesh.ad.jp] has quit [Read error: 113 (No route to host)] 15:19:36 What qualities characterize Scheme for the sake of your question, Quadrescence? 15:19:46 And what is a `GC technique', precisely? 15:20:22 I would guess that he means "algorithm" there. 15:20:31 Yes. 15:20:58 Riastradh: I don't understand your first question. 15:21:23 There is no silver bullet. Different algorithms favor different classes of programs. 15:21:30 Why would you ask about Scheme specifically? Why would you talk about garbage collection techniques for Scheme specifically? 15:21:42 Hm. I seem to have repeated myself there. 15:21:44 -!- mib_c1vjl5p2 [i=d4c84113@gateway/web/ajax/mibbit.com/x-75957d3c4de2cc17] has quit ["http://www.mibbit.com ajax IRC Client"] 15:22:21 athos [n=philipp@92.250.250.68] has joined #scheme 15:22:25 chandler: Well, just to clarify, I mean garbage collection for a Scheme system, as in, a collector for an actual Scheme runtime. 15:22:48 The kinds of things that parameterise the requirements for a GC might include: 15:22:50 I figured I'd mention Scheme specifically because some collecting algorithms may be more suitable for Scheme in general than others. 15:22:57 1) Realtimeness (are unbounded pauses allowed?) 15:22:59 Right. Can you tell me why a garbage collector for a Scheme runtime would be different than one for Java, or ML, or Common Lisp? 15:23:30 2) Can the program mutate things, or just create things? More generally, can we tell what cells are mutable or immutable, and what's the most common case? 15:23:39 3) Can we tell what's a pointer and what isn't at all? 15:24:21 the one true garbage collector is stop and copy 15:24:33 4) What shapes of objects do we get? Examples might be "arbitrary-sized blobs that never contain any pointers", "fixed-sized structures, some cells of which will be pointers and some won't, and we can tell by examining the header", etc. 15:24:37 chandler: No, any technique, AFAIK, can be used with any of them. However, it just *seems*, and I may be wrong, that some techniques are better suited for a Scheme than, say, for a C-like language. 15:24:51 alaricsp: These are nice things to look at. I'm noting them. 15:24:51 5) Do we have static typing? Some GC work can be precached in the compiler if so, perhaps. 15:25:24 A C-like language? 15:25:29 what 15:25:34 6) Can we get the cooperation of the language by, for example, asking that the GC be notified of every mutation ('write barrier') or even every read ('read barrier')? 15:25:35 soupdragon: Like Java, perhaps. 15:25:45 ok I think Java is a bit different to C but ok 15:25:53 alaricsp: I'm not sure why the *language* would cooperate... 15:25:53 soupdragon: Hence, C-like. 15:25:57 Java has C-like syntax, but a more Lisp-like data model ;-) 15:26:05 Java is C-like in syntax, but... 15:26:08 oh you're just going by what the code looks like 15:26:16 intptr_t 15:26:18 chandler: Well, I mean the language runtime there. When writing a GC for GCC-compiled C like Boehm, one cannot have such luxuries as barriers ;-) 15:26:42 I think there are more fundamental categorizations of garbage colleciton algorithms than some of the implementation technique-specific points that alaricsp has been raising. 15:27:15 *nod* I'm just coming up with some design inputs I'd want to know if some hypothetical language runtime implementator came to me asking for a GC, off of the top of my head ;-) 15:27:17 Java differs from C in that the addresses of objects in C may not change. Of course, one could always just store some extra information in every object about its `address', which would be more of a hash value or a time stamp than an address in that case. 15:27:19 alaricsp: If you have the cooperation of the operating system and hardware, you can use memory protection as a write barrier. 15:28:01 chandler: That's true, but still, the GC implementer would need to know if they have that cooperation, to know if it's an option - be it the language implementation or the OS that provides it 15:28:10 I'm not sure it'd be entirely useful in a non-compacting collector, though... 15:28:14 Riastradh: Is the address of an object in java something observable? 15:28:24 or it's just an implementation thing? 15:28:40 (so it makes something like stop and copy valid in java?) 15:28:46 Riastradh: Java doesn't really expose an 'address', some JVMs might have movable objects, but I'm sure some don't... 15:28:58 Also, Java differs from C in that the Java language does not, to my knowledge, preclude a sufficient approximation of all roots. 15:29:14 (Huh. One could call a write barrier implementation "Stomp and Copy.") 15:29:19 :-) 15:29:28 soupdragon, as far as I know, the `address' of an object is not a concept in Java. 15:29:32 ok 15:29:40 soupdragon: By "stop and copy", I assume you're referring to a two-space copying collector? If so, yes, you can use that as a garbage collection algorithm in a Java runtime. 15:30:01 mib_re701s91 [i=d4c84113@gateway/web/ajax/mibbit.com/x-6c64f0621b4e23e3] has joined #scheme 15:30:04 The rub in C, though, is not intptr_t (an optional type) but the printf/scanf `%p' directive, which allows one to hide pointers in strings. 15:30:12 -!- Mr-Cat [n=Miranda@hermes.lanit.ru] has quit [Read error: 54 (Connection reset by peer)] 15:30:21 -!- mib_re701s91 [i=d4c84113@gateway/web/ajax/mibbit.com/x-6c64f0621b4e23e3] has left #scheme 15:30:38 mib_re701s91 [i=d4c84113@gateway/web/ajax/mibbit.com/x-6c64f0621b4e23e3] has joined #scheme 15:30:46 Externalizable object references exist in many languages. I'm not sure what about '%p' is unique in that regard. 15:31:03 -!- ChanServ has set mode +o chandler 15:31:07 Riastradh: Yeah, IIRC in Java you can define the roots as the set of all loaded classes (which in turn contain references to their methods and literals referenced therein and constants and so on, plus static fields, which are basically global variables), plus the stack frames of all threads 15:31:33 Does %p work in a scanf format string?? I. am. appalled. 15:31:48 Yep, Daemmerung. 15:31:50 Another rub in C (and one to add to my list of GC requirements) is that one can have a pointer into the middle of a heap-allocated object, not just to the start, which can make life harder for a GC. 15:32:04 %p works in scanf? LOL. 15:32:15 *Daemmerung* spits 15:32:21 I don't see why it shouldn't. 15:32:30 I use %p lots in printf for debugging, but the thought of using it in scanf is indeed alarming 15:32:51 Anyway, the more general case of what Riastradh points out with %p is that one can hide pointers ANYWHERE 15:32:51 chandler, the problem that %p in scanf causes is that a GC can change the semantics of a program. 15:32:54 It actually seems substantially less wrong than, say, psyntax's readable representation for gensyms. 15:32:56 xor-linked lists, for example ;-) 15:32:58 No, alaricsp. 15:33:16 As far as I know, the only place one can reliably hide a pointer in standard C is in a string formatted with %p. 15:33:29 CaptainMorgan [n=CaptainM@75.68.42.94] has joined #scheme 15:33:38 what's wrong with serializible pointers? 15:33:42 Does standard C forbid tricks like http://en.wikipedia.org/wiki/XOR_linked_list somehow? 15:33:45 Why isn't XORing a mask onto an intptr_t and storing it an equivalent form of "hiding"? 15:33:52 intptr_t is not guaranteed to exist. 15:33:56 I suppose the problem is that they don't survive the program being closed and opened again? 15:33:59 (Nor, of course, is uintptr_t.) 15:34:19 The standard does not guarantee any integer type wide enough to hold pointers to objects. 15:34:34 Ah, yes 15:35:04 But in practice you're likely to have an integer that can hold a pointer, and so one can do such tricks in most implementations one will find 15:35:15 Eg, gcc on any workstation/server CPU 15:35:17 soupdragon, the problem that they case, for the sake of this discussion, is that a garbage collector can fail to identify those `hidden' pointers, and deallocate the storage for the object to which they pointed. 15:35:29 yeah 15:35:36 I'm still not understanding how this is different than externalizable object references in any other language. 15:35:41 de-facto standard C rather than de-jure standard C ;-) 15:35:53 chandler: Well, there's various kinds of externalizable object reference 15:36:29 C's have certain properties: one being that they cannot be checked for safety on reading back, unless the programmer builds their own mechanism for doing so 15:36:44 chandler, their existence in C precludes implementations with garbage collectors. 15:36:51 -!- acarrico [n=acarrico@pppoe-68-142-46-227.gmavt.net] has quit [Read error: 104 (Connection reset by peer)] 15:36:54 So any context that reads a pointer from the outside world and trusts it runs the significant risk of breaking in hilarious ways 15:37:14 hilarious ways that, in a networked application, will often turn your computer into a spam server. 15:37:35 Riastradh: At least it precludes them from collecting objects for which a pointer has been externalized. 15:38:03 "Hilarity ensues" 15:38:55 Also, those object references (addresses) are handed out by something we don't have control of (the implementation), so anything that invalidates those pointers (a process restart) will mean they become meaningless - they're fragile 15:39:17 Object references in persistent systems are reconstructible 15:39:26 chandler, OK, if you amend the definition of `referenced' to include `having been externalized'. 15:39:29 ISTR Java has a mechanism for doing this with RMI, but I've never seen it used 15:40:02 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 15:42:46 -!- benny99 [n=benny@p5486E2AE.dip.t-dialin.net] has quit ["Leaving"] 15:50:04 -!- jonrafkind [n=jon@c-98-202-86-149.hsd1.ut.comcast.net] has quit [Read error: 110 (Connection timed out)] 15:50:38 rdd [n=user@c83-250-157-93.bredband.comhem.se] has joined #scheme 15:52:01 -!- mib_re701s91 [i=d4c84113@gateway/web/ajax/mibbit.com/x-6c64f0621b4e23e3] has quit ["http://www.mibbit.com ajax IRC Client"] 15:53:07 -!- mmc [n=mima@esprx02x.nokia.com] has quit ["Leaving."] 15:56:00 copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 16:03:48 -!- jedc [n=jed1@c-98-232-225-102.hsd1.or.comcast.net] has quit [Remote closed the connection] 16:05:19 mib_u5c8h9rr [i=d4c84113@gateway/web/ajax/mibbit.com/x-dd16cd18ebbfd717] has joined #scheme 16:05:44 -!- mib_u5c8h9rr [i=d4c84113@gateway/web/ajax/mibbit.com/x-dd16cd18ebbfd717] has left #scheme 16:07:18 dysinger [n=tim@166.129.156.143] has joined #scheme 16:07:46 pumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has joined #scheme 16:08:49 kilimanjaro [n=kilimanj@70.116.95.163] has joined #scheme 16:10:14 -!- npe [n=npe@195.207.5.2] has quit [No route to host] 16:10:19 jonrafkind [n=jon@crystalis.cs.utah.edu] has joined #scheme 16:17:42 bweaver [n=user@68.60.0.190] has joined #scheme 16:19:30 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Remote closed the connection] 16:26:41 -!- copumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit [Connection timed out] 16:30:54 cracki_ [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has joined #scheme 16:35:30 -!- jewel [n=jewel@dsl-242-134-212.telkomadsl.co.za] has quit [Read error: 113 (No route to host)] 16:41:21 Jarvellis [n=jarv@dsl-217-155-101-22.zen.co.uk] has joined #scheme 16:45:12 elias` [n=c@host86-159-170-69.range86-159.btcentralplus.com] has joined #scheme 16:45:28 What exactly is "precise" GC? 16:45:45 r0bby [n=wakawaka@guifications/user/r0bby] has joined #scheme 16:46:23 Quadrescence: a precise GC starts at "root" objects and follows all its references to mark other objects 16:47:05 peter_12: So, would a naive reference counting GC, or even mark-and-sweep be considered precise? 16:47:53 I don't know for sure about the reference counting GC. Definitely a mark-and-sweep can be a precise GC 16:48:06 mark and sweep could also be a conservative GC 16:48:22 -!- cracki [n=cracki@sglty.kawo2.RWTH-Aachen.DE] has quit [Read error: 110 (Connection timed out)] 16:48:51 I guess reference counting is precise (its just not very good) 16:48:59 Yeah 16:49:27 -!- MichaelRaskin [n=MichaelR@213.171.48.239] has quit [Read error: 60 (Operation timed out)] 16:49:55 I'll be back 16:49:59 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [] 16:51:00 -!- r0bby [n=wakawaka@guifications/user/r0bby] has quit [Read error: 104 (Connection reset by peer)] 16:51:14 r0bby [n=wakawaka@guifications/user/r0bby] has joined #scheme 16:51:54 -!- jao [n=jao@74.Red-80-24-4.staticIP.rima-tde.net] has quit [Read error: 113 (No route to host)] 16:52:17 REPLeffect [n=REPLeffe@69.54.115.254] has joined #scheme 16:55:30 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 16:56:30 -!- r0bby [n=wakawaka@guifications/user/r0bby] has quit [Read error: 54 (Connection reset by peer)] 16:56:49 r0bby [n=wakawaka@guifications/user/r0bby] has joined #scheme 16:59:28 -!- forcer [n=forcer@d102163.adsl.hansenet.de] has quit [Read error: 104 (Connection reset by peer)] 17:08:04 -!- ASau [n=user@77.246.230.248] has quit ["off"] 17:10:16 sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 17:15:16 sphex_ [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has joined #scheme 17:27:28 -!- sphex__ [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 17:28:59 -!- sphex [n=nobody@modemcable185.138-56-74.mc.videotron.ca] has quit [Read error: 110 (Connection timed out)] 17:33:11 Lectus [n=Frederic@189.105.121.200] has joined #scheme 17:35:07 -!- ASau` [n=user@77.246.230.246] has quit ["off"] 17:38:59 Quadrescence, a precise garbage collector traces only live objects. A conservative, or imprecise, garbage collector is a conservative approximation: it traces at least the live objects, and possibly some unreferenced objects also. 17:39:24 -!- sepult [n=buggarag@87.78.31.189] has quit ["leaving"] 17:47:34 -!- CESSMASTER [n=CESSMAST@unaffiliated/joelywoely] has left #scheme 17:49:52 melgray [n=melgray@70.99.250.82] has joined #scheme 17:52:21 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [] 17:52:36 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 17:52:59 Riastradh: so that would make a reference counter a conservative gc? 17:53:11 as orphaned loops would not be collected 17:53:20 -!- bpalmer [n=user@unaffiliated/bpalmer] has left #scheme 17:55:05 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Read error: 60 (Operation timed out)] 17:55:11 peter_12_ [i=1844acd4@gateway/web/ajax/mibbit.com/x-5d7b246c8738db5b] has joined #scheme 17:55:36 -!- peter_12_ [i=1844acd4@gateway/web/ajax/mibbit.com/x-5d7b246c8738db5b] has quit [Client Quit] 17:55:42 sepult [n=buggarag@xdsl-87-78-31-189.netcologne.de] has joined #scheme 17:56:07 peter_12_ [i=d85e983e@gateway/web/ajax/mibbit.com/x-3878fc74671124a9] has joined #scheme 17:59:10 -!- peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has quit [Read error: 60 (Operation timed out)] 18:02:20 -!- pumpkin [n=pumpkin@c-24-63-67-154.hsd1.nh.comcast.net] has quit ["Leaving..."] 18:03:36 puchacz [n=puchacz@87-194-5-99.bethere.co.uk] has joined #scheme 18:04:41 No, peter_12_, that's different. An automatic reference counting system is not a form of garbage collection at all. 18:05:46 -!- rdd [n=user@c83-250-157-93.bredband.comhem.se] has quit [] 18:10:34 -!- moghar [n=moghar@157.185.jawnet.pl] has quit [Read error: 54 (Connection reset by peer)] 18:11:02 mejja [n=user@c-87bae555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #scheme 18:11:21 moghar [n=moghar@157.185.jawnet.pl] has joined #scheme 18:11:46 jao [n=jao@249.Red-88-18-102.staticIP.rima-tde.net] has joined #scheme 18:16:31 Riastradh: why not? 18:16:47 if the program has no cycles it is acceptable isn't it? 18:18:18 mmc [n=mima@cs162149.pp.htv.fi] has joined #scheme 18:18:24 -!- mmc [n=mima@cs162149.pp.htv.fi] has quit [Remote closed the connection] 18:26:13 garbage collection is deferred deallocation of memory. reference counting is just identifying what could be deallocated. It's like equating the moving crew to the real estate agent. 18:26:43 if you immediately free any memory with 0 references, that's reference counting without garbage collection. 18:27:05 nah I'm probably wrong, never mind... 18:30:12 BubbaT [i=BubbaT@adsl-99-147-227-252.dsl.chcgil.sbcglobal.net] has joined #scheme 18:30:25 fuck scheme.. seriously.... 18:30:35 done with my HW for this semseter 18:30:39 :) 18:30:40 -!- socket^ [n=socket@bzq-79-183-32-127.red.bezeqint.net] has left #scheme 18:30:47 nice 18:33:59 elias` [n=c@host86-159-170-69.range86-159.btcentralplus.com] has joined #scheme 18:36:19 lol 18:37:13 synx: well I get what you mean yeah 18:38:37 mrsolo [n=mrsolo@nat/yahoo/x-e6564d440128540b] has joined #scheme 18:39:27 -!- pfo [n=pfo@chello084114049188.14.vie.surfer.at] has quit [Read error: 110 (Connection timed out)] 18:40:26 -!- jlongster [n=user@c-68-59-187-95.hsd1.tn.comcast.net] has quit [Read error: 113 (No route to host)] 18:42:06 etoxam [n=||||||||@84.79.67.254] has joined #scheme 18:42:35 ASau [n=user@193.138.70.52] has joined #scheme 18:46:22 -!- moghar [n=moghar@unaffiliated/moghar] has quit [Read error: 104 (Connection reset by peer)] 18:47:12 moghar [n=moghar@157.185.jawnet.pl] has joined #scheme 18:47:36 jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has joined #scheme 19:00:17 peter_12 [n=peter_12@S010600119506b129.gv.shawcable.net] has joined #scheme 19:01:21 ok if reference counting is not conservative garbage collector then is "a garbage collector that uses reference counting to identify non-live objects" a conservative garbage collector? 19:01:30 -!- peter_12_ [i=d85e983e@gateway/web/ajax/mibbit.com/x-3878fc74671124a9] has quit ["http://www.mibbit.com ajax IRC Client"] 19:03:49 -!- jonrafkind [n=jon@crystalis.cs.utah.edu] has quit [Read error: 113 (No route to host)] 19:10:04 -!- marcoecc [i=me@gateway/gpg-tor/key-0x9C9AAE7F] has quit [Remote closed the connection] 19:11:01 -!- underspecified [n=eric-n@leopard175.naist.jp] has quit [Remote closed the connection] 19:11:06 marcoecc [i=me@gateway/gpg-tor/key-0x9C9AAE7F] has joined #scheme 19:14:11 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Read error: 110 (Connection timed out)] 19:17:22 elias` [n=c@host81-155-251-189.range81-155.btcentralplus.com] has joined #scheme 19:25:36 If it doesn't produce garbage in the first place, then there is no need for garbage collection. 19:26:25 -!- elias` [n=c@unaffiliated/elias/x-342423] has quit [Operation timed out] 19:31:04 -!- barney [n=bernhard@p549A1C90.dip0.t-ipconnect.de] has quit [Remote closed the connection] 19:33:55 -!- dysinger [n=tim@166.129.156.143] has quit [Connection timed out] 19:34:27 kuribas [i=kristof@d54C434A2.access.telenet.be] has joined #scheme 19:34:28 A conservative garbage collector is a bug; if the object graph may contain cycles, then reference counting is not a strategy for garbage collection at all. 19:35:09 I want a better garbage collector which can detect if anyone cares about the user, and if not, garbage-collect them 19:40:14 saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has joined #scheme 19:44:40 mmc [n=mima@cs162149.pp.htv.fi] has joined #scheme 19:47:09 jonrafkind [n=jon@crystalis.cs.utah.edu] has joined #scheme 19:53:28 moghar_ [n=moghar@157.185.jawnet.pl] has joined #scheme 19:53:28 -!- moghar [n=moghar@unaffiliated/moghar] has quit [Read error: 104 (Connection reset by peer)] 19:54:54 keyofnight [n=key@cpe-76-171-76-175.socal.res.rr.com] has joined #scheme 19:56:01 Hello hello! 19:57:17 -!- saccade_ [n=saccade@65-78-24-131.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com] has quit [Read error: 110 (Connection timed out)] 20:02:53 -!- jonrafkind [n=jon@crystalis.cs.utah.edu] has quit [Read error: 60 (Operation timed out)] 20:03:59 jonrafkind [n=jon@eng-4-66.hotspot.utah.edu] has joined #scheme 20:04:11 -!- Riastradh [n=rias@pool-141-154-208-150.bos.east.verizon.net] has quit [Read error: 54 (Connection reset by peer)] 20:04:42 Riastradh [n=rias@pool-141-154-208-150.bos.east.verizon.net] has joined #scheme 20:06:58 dysinger [n=tim@32.177.29.119] has joined #scheme 20:11:17 Riastrad1 [n=rias@pool-141-154-208-150.bos.east.verizon.net] has joined #scheme 20:11:24 socialite [n=piespy@dynamic-78-8-3-210.ssp.dialog.net.pl] has joined #scheme 20:12:16 -!- Riastradh [n=rias@pool-141-154-208-150.bos.east.verizon.net] has quit [Nick collision from services.] 20:12:19 I'm looking for a scheme implimentation, schemer.org is a bit confusing here. I am auditing a course and in the second half they will be using "The Scheme Programing Language" as a text, I would like to install something now ( both Windows and debian ). 20:12:21 -!- Riastrad1 is now known as Riastradh 20:12:40 I would also like a graphical debugger witgh it. 20:13:27 -!- bombshelter13_ [n=bombshel@toronto-gw.adsl.erx01.mtlcnds.ext.distributel.net] has quit [] 20:14:29 BubbaT: PLT / DrScheme is probably your best bet 20:14:32 BubbaT: try second link... in the /topic... 20:15:53 the book as some other link implies would want you to use chez scheme... 20:17:58 jao` [n=jao@249.Red-88-18-102.staticIP.rima-tde.net] has joined #scheme 20:18:32 -!- jao` [n=jao@249.Red-88-18-102.staticIP.rima-tde.net] has quit [Client Quit] 20:19:38 BubbaT: You may want to install Petit Chez for following TSPL. 20:25:39 hkBst [n=hkBst@gentoo/developer/hkbst] has joined #scheme 20:27:51 benny99 [n=benny@p5486DA62.dip.t-dialin.net] has joined #scheme 20:28:30 I'm struggling with define-syntax not letting me reference previously defined values. Here's a working version of my macro: http://pastebin.ca/1462557 20:29:10 Notice the definition for symbol+ near the top? If I define it before the define-syntax, Scheme48 tells me I have an undefined variable when I try to refer to it. 20:29:16 danking: ^ 20:29:39 Somebody got a link of 'how call-with-current-continuation is defined' ? 20:30:00 Magic. 20:30:54 TimMc, yes, that's because the right-hand side of any DEFINE-SYNTAX is evaluated during the process of macro expansion, which is long before any run-time definitions are evaluated. 20:31:45 Argh, curse you, define! 20:33:01 TimMc, if you want to separate the definition of SYMBOL+, you will need to put it into a different structure. Are you familiar with Scheme48's module system? 20:33:40 Riastradh: Not enough, yet. I have heard praises sung of it, but I'm not convinced. :-P 20:34:19 OK, that's going to the top of my to-do list for things to learn for this project. 20:34:23 Somebody got a spell book about 'how call-with-current-continuation is defined' ? 20:36:05 benny99, usually it, or a lower-level variant of it that does not interact with DYNAMIC-WIND, is a primitive procedure, not defined in terms of other Scheme constructs. 20:36:40 Riastradh, is it possible to define it in other scheme constructs ? 20:36:55 'without changing the scheme interpreter' 20:37:08 Not without something that amounts to the same thing. 20:37:17 :( 20:37:49 In any sequential programming language, some part of the program has control of the machine at any given time, and in order for the program to proceed, it must transfer control of the machine to another part of the program. 20:39:08 In a recursive programming language, where any procedure can be called at any point in a program, rather than having a program be simply a fixed sequence of instructions (with repeated actions merely copied), you must conceptually pass to every procedure an implicit extra argument that describes where you want control of the machine to be passed when the procedure is done. 20:40:23 In fact, this extra argument is really just another kind of procedure, except that it doesn't itself take another extra argument; thus there are, conceptually, two classes of procedures: user procedures, those that you wrote in your program with the term `procedure' in mind, using LAMBDA or DEFINE or whatnot, which each have an extra implicit parameter; and continuation procedures, those that are supplied as arguments for that ex 20:40:29 wingo [n=wingo@243.Red-81-39-158.dynamicIP.rima-tde.net] has joined #scheme 20:40:43 Riastradh, I recently found an interesting irssi script that will automatically split lines that are too long for your IRC server. 20:41:20 Phooey. Well, where was I truncated? 20:41:28 "supplied as arguments for that ex" 20:41:34 ...extra implicit parameter. 20:41:45 (Does that irssi script use a random heuristic, or does it actually do a reliable job?) 20:41:49 I don't remember what client you're using. If it's irssi, you may want to install http://scripts.irssi.org/scripts/splitlong.pl 20:42:14 I see: just another heuristic. 20:42:35 A heuristic solution may be better than nothing. 20:42:39 benny99_ [n=benny@p5486DA62.dip.t-dialin.net] has joined #scheme 20:43:20 (sorry) 20:43:24 "for that e..." <-- last part of the last message that I recieved 20:43:39 has scheme48 ever been ported to arm? 20:44:07 ecraven, it runs on arm fine. 20:44:24 dmoerner: only recent versions, or old ones too? 20:44:47 ecraven, 1.8 works on arm and the newer armel abi 20:45:01 Riastradh, did I miss something ? 20:45:15 benny99_, read the logs if you did: 20:45:51 ecraven, looks like 1.2 and 1.3 also built on arm, possibly with some patching: https://buildd.debian.org/build.php?arch=arm&pkg=scheme48 20:46:08 -!- Jarvellis is now known as MinorityOfOne 20:46:54 dmoerner: great, thanks! 20:46:56 TimMc, Scheme48 very carefully separates the compile-time and run-time environments of programs, and there will come a time, if you use Scheme48 extensively, when you grow very glad of this. 20:48:33 TimMc, when you organize your program into structures, the environment you get at run-time in some part of your program is dictated entirely by the OPEN clauses of the DEFINE-STRUCTURE form for that part of your program. The environment you get on the right-hand sides of DEFINE-SYNTAX forms, LET-SYNTAX forms, and LETREC-SYNTAX forms is dictated by the OPEN clauses within the FOR-SYNTAX clauses of the DEFINE-STRUCTURE form. The 20:48:40 Foo. That was much too long, I suppose. 20:49:27 clauses of the DEFINE-STRUCTURE form. The 20:49:34 -!- rmorris [n=user@209.120.179.205] has quit [Remote closed the connection] 20:50:22 I seem to recall that freenode's servers send the maximum length of a message that they can reliably relay. 20:50:26 The environment on the right-hand sides of LET-SYNTAX and LETREC-SYNTAX forms *within* the right-hand sides of *-SYNTAX forms is determined by (FOR-SYNTAX (FOR-SYNTAX (OPEN ...))), and so on, as high as you want, although seldom does one ever go beyond one FOR-SYNTAX level. 20:51:05 benny99__ [n=benny@p5486DA62.dip.t-dialin.net] has joined #scheme 20:51:30 -!- ASau [n=user@193.138.70.52] has quit [Read error: 104 (Connection reset by peer)] 20:52:38 chandler, I glanced at some of the information they dump upon successful connection, but none of it was obviously that. 20:53:18 Hm. Perhaps my memory is wrong, then. 20:54:37 ASau [n=user@193.138.70.52] has joined #scheme 20:55:58 Riastradh, thanks for your explanation 20:56:20 Riastradh: how've you been? 20:56:32 -!- puchacz [n=puchacz@87-194-5-99.bethere.co.uk] has quit [Remote closed the connection] 20:56:47 night 20:57:17 -!- benny99__ [n=benny@p5486DA62.dip.t-dialin.net] has quit ["Leaving"] 20:57:22 benny99__, you can make these extra implicit continuation parameters explicit by writing code in `continuation-passing style'. Then the definition of CWCC, which just turns the continuation procedure it is given into a user procedure, is quite trivial. 20:57:24 -!- metasyntax|work [n=taylor@75-149-208-121-Illinois.hfc.comcastbusiness.net] has quit ["If you reach back in your memory, a little bell might ring, 'bout a time that once existed when money wasn't king."] 20:57:58 arcfide [n=arcfide@adsl-99-14-211-141.dsl.bltnin.sbcglobal.net] has joined #scheme 21:00:55 -!- benny99 [n=benny@p5486DA62.dip.t-dialin.net] has quit [No route to host] 21:03:54 -!- benny99_ [n=benny@p5486DA62.dip.t-dialin.net] has quit [Read error: 113 (No route to host)] 21:05:58 -!- luz [n=davids@139.82.89.70] has quit ["Client exiting"] 21:12:58 -!- jonrafkind [n=jon@eng-4-66.hotspot.utah.edu] has quit [Success] 21:13:13 jonrafkind [n=jon@crystalis.cs.utah.edu] has joined #scheme 21:20:11 -!- Edico [n=Edico@unaffiliated/edico] has quit ["Leaving"] 21:21:53 -!- dudleyf [n=dudleyf@65.243.31.107] has quit [] 21:22:32 npe [n=npe@94-224-251-223.access.telenet.be] has joined #scheme 21:25:32 blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has joined #scheme 21:25:38 -!- ikaros [n=ikaros@e179084024.adsl.alicedsl.de] has quit ["Leave the magic to Houdini"] 21:33:54 Adamant [n=Adamant@24-231-157-130.static.trcy.mi.charter.com] has joined #scheme 21:34:14 -!- Adamant [n=Adamant@unaffiliated/adamant] has quit [Remote closed the connection] 21:35:49 copumpkin [n=pumpkin@dhcp-210-105.cs.dartmouth.edu] has joined #scheme 21:37:15 -!- copumpkin [n=pumpkin@dhcp-210-105.cs.dartmouth.edu] has quit [Client Quit] 21:37:40 rdd [n=user@c83-250-157-93.bredband.comhem.se] has joined #scheme 21:42:33 elias` [n=c@unaffiliated/elias/x-342423] has joined #scheme 21:47:03 -!- fnord123 [n=fnord123@host81-151-196-168.range81-151.btcentralplus.com] has quit ["bedtime in uk"] 21:53:11 -!- cracki_ is now known as cracki 21:58:34 borism [n=boris@195-50-199-119-dsl.krw.estpak.ee] has joined #scheme 22:04:31 -!- borism_ [n=boris@195-50-201-17-dsl.krw.estpak.ee] has quit [Read error: 145 (Connection timed out)] 22:11:39 -!- stepnem [n=stepnem@topol.nat.praha12.net] has quit ["ZNC - http://znc.sourceforge.net"] 22:12:51 -!- underspecified_ [n=eric@softbank220043052007.bbtec.net] has quit [] 22:14:56 dysinger_ [n=tim@71.20.231.3] has joined #scheme 22:16:16 well, the results of the scheme survey are delicious so far; "NAFTA-compliance" doesn't redound to gambit's credit, though, i'm afraid 22:19:30 -!- wingo [n=wingo@243.Red-81-39-158.dynamicIP.rima-tde.net] has quit [Read error: 113 (No route to host)] 22:19:49 that's too bad; who doesn't like a scheme that's trilaterally corroborated? 22:19:49 -!- alaricsp [n=alaricsp@88-202-202-163.rdns.as8401.net] has quit [Remote closed the connection] 22:21:05 -!- sepult [n=buggarag@xdsl-87-78-31-189.netcologne.de] has quit ["leaving"] 22:22:47 stepnem [n=stepnem@topol.nat.praha12.net] has joined #scheme 22:24:06 What good is NAFTA-compliance in a language? 22:24:07 dysinger__ [n=tim@71.20.231.3] has joined #scheme 22:24:20 I'm assume it is "North American Free Trade Agreement" 22:24:33 And why are we being denied a Scheme with the great taste of old Mexico? 22:24:44 haha 22:25:01 speaking of srfi-38 22:25:05 "When the list is read back in, there will be two or more copies of the string which are (eqv?) but not (eq?)." 22:25:13 I think he meant 'equal?'. 22:25:55 ... since eq? and eqv? have the same behavior on non-empty strings ;) 22:26:27 yeah. 22:26:34 -!- MinorityOfOne [n=jarv@dsl-217-155-101-22.zen.co.uk] has quit [] 22:26:49 gambit seems to have a bad habit of killing cats 22:27:10 dudleyf [n=dudleyf@ip70-178-212-238.ks.ks.cox.net] has joined #scheme 22:28:30 with dildos, apparently 22:29:07 mbishop: so someone is reporting this to be the case? 22:29:09 mbishop: and i can't tell whether stalin is responsible for the killing of people, time or both 22:29:37 dysinger___ [n=tim@71.20.231.3] has joined #scheme 22:30:05 heh 22:30:08 well 22:30:09 Mom! Kitty's being a dildo again! 22:30:27 I suppose you could say Stalin killed both people and time, depending on which Stalin you are talking about 22:31:14 -!- moghar_ [n=moghar@157.185.jawnet.pl] has quit [Read error: 113 (No route to host)] 22:31:31 Off to read the last 2000 lines of chibi scheme. That should put me at about 10000 lines of C reading in five days and some very tired eyes. 22:32:33 -!- dysinger__ [n=tim@71.20.231.3] has quit [Operation timed out] 22:33:06 peter_12: what, you read boehm, too? 22:33:16 and how much good do you derive from reading code? 22:33:17 no: I read Tiny Scheme first 22:33:39 I'm glad you asked. I can procrastinate that way. 22:33:54 I am deriving a lot of good from reading foof's code in chibi scheme 22:34:17 serious tinychibilitis... 22:34:32 of the eyes 22:35:00 I've read parts of boehm before...it makes a very clear case for standards! :-S 22:36:09 -!- dysinger [n=tim@32.177.29.119] has quit [Success] 22:38:55 -!- mejja [n=user@c-87bae555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Remote closed the connection] 22:39:58 dysinger [n=tim@166.129.129.135] has joined #scheme 22:41:12 -!- dysinger_ [n=tim@71.20.231.3] has quit [Read error: 110 (Connection timed out)] 22:45:58 -!- jonrafkind [n=jon@crystalis.cs.utah.edu] has quit [No route to host] 22:49:09 dysinger_ [n=tim@71.20.231.3] has joined #scheme 22:50:09 -!- joast [n=rick@76.178.184.231] has quit [Read error: 110 (Connection timed out)] 22:50:36 -!- dysinger___ [n=tim@71.20.231.3] has quit [Read error: 104 (Connection reset by peer)] 22:52:19 -!- kuribas [i=kristof@d54C434A2.access.telenet.be] has quit ["ERC Version 5.2 (IRC client for Emacs)"] 22:52:21 joast [n=rick@76.178.184.231] has joined #scheme 22:56:50 underspecified [n=eric@softbank220043052007.bbtec.net] has joined #scheme 23:00:22 -!- hkBst [n=hkBst@gentoo/developer/hkbst] has quit [Remote closed the connection] 23:04:40 dysinger__ [n=tim@71.20.231.3] has joined #scheme 23:06:05 -!- Arelius [n=indy@64.174.9.113] has quit [Read error: 110 (Connection timed out)] 23:08:41 -!- dysinger_ [n=tim@71.20.231.3] has quit [Read error: 60 (Operation timed out)] 23:11:07 -!- dysinger [n=tim@166.129.129.135] has quit [Connection timed out] 23:12:57 -!- jlongster [n=user@75-148-111-133-Chattanooga.hfc.comcastbusiness.net] has quit [Read error: 113 (No route to host)] 23:13:50 -!- BubbaT [i=BubbaT@adsl-99-147-227-252.dsl.chcgil.sbcglobal.net] has quit [] 23:15:34 -!- annodomini [n=lambda@wikipedia/lambda] has quit [] 23:21:05 -!- Greg02_ [n=greg@ool-18bc79e7.dyn.optonline.net] has quit [Read error: 104 (Connection reset by peer)] 23:25:02 greg02 [n=greg@ool-18bc79e7.dyn.optonline.net] has joined #scheme 23:28:01 -!- athos [n=philipp@92.250.250.68] has quit [Remote closed the connection] 23:32:13 jonrafkind [n=jon@c-98-202-86-149.hsd1.ut.comcast.net] has joined #scheme 23:32:34 CSdread__ [n=danielf@209-188-116-183.taosnet.com] has joined #scheme 23:42:10 -!- blackened` [n=blackene@ip-89-102-28-224.karneval.cz] has quit [Read error: 110 (Connection timed out)] 23:44:35 -!- joast [n=rick@76.178.184.231] has quit [Read error: 110 (Connection timed out)] 23:46:12 joast [n=rick@76.178.184.231] has joined #scheme 23:49:03 -!- CSdread_ [n=danielf@209-188-116-183.taosnet.com] has quit [Read error: 110 (Connection timed out)] 23:54:00 Arelius [n=indy@64.174.9.113] has joined #scheme 23:55:26 -!- Ppjet6 [n=ppjet@ivr94-11-88-187-39-7.fbx.proxad.net] has quit [Read error: 104 (Connection reset by peer)]