
Benjamin Franksen writes:
karczma@info.unicaen.fr wrote:
Bryce Bockman writes:
Don't confuse categories please. SICP doesn't say how to make a lazy variant of Scheme. Applicative protocol is not normal protocol, the reduction is, as it is.
We may have a different copy of SICP, but in mine (2nd edition) there is Chapter 4.2 "Variantions on a Scheme -- Lazy Evaluation" and in particular 4.2.2 "An Interpreter with Lazy Evaluation".
Absolutely right, and BTW., I had http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_sec_4.2 on the screen when I wrote what I wrote. Michael Vanier explained well my aim (better than myself, an optional sad smiley here...). I wanted just to say that a lazy interpreter etc., *is not Scheme*. Well, AS say: "In this section we will implement a normal-order language that is the same as Scheme except that compound procedures are non-strict in each argument. Primitive procedures will still be strict." We read, and we see that the lazy layer is a superficial one, with 'forcing' implemented at the surface, so for me it was enough to remark that I consider it to be a different language. Sorry for the hair-splitting manners, I didn't want to annoy anybody. -- On the other hand, it would be an interesting pedagogical initiative to take such language as Scheme, but instead of making a "Scheme variant", "metacircular" etc. in it, to try to implement a genuine lazy graph reduction strategy, as in Clean. Or implement a kind of STG Haskell machine. Regards. Jerzy Karczmarczuk