On Wed, 7 Mar 2007, William D Clinger wrote:

I am posting this as an individual member of the Scheme
community.  I am not speaking for the R6RS editors.

AndrevanTonder wrote:
Granted, but what does this have to do with being an interpreter or not?

"Pure" is the operative word.

In an earlier message, you had written:
No r5rs-conformant Scheme interpreter will start evaluating a form
without macro-expanding it first.

I stand corrected.

You have granted that the R5RS allows my example program
to print something.  If your earlier claim is true, then
the printing occurs after the program's one form has been
macro-expanded.  Macro-expansion of that particular form
takes a long time.

Maybe I do not understand what is meant by "pure". I would not disqualify an interpreter that expands BEGIN forms before evaluating them. Do you claim that an interpreter does not deserve to be called "pure" if its strategy is to expand the entire BEGIN form before evaluating it?

In a way, toplevel BEGIN is an anomaly, so let's consider a toplevel LETREC expression. I claim (and this is now a modified claim) that various r5rs interpreters will expand such an expression fully before attempting to evaluate it. I don't consider them less pure because of this strategy. I also consider the formal concept of an r6rs "toplevel program" to be analogous to an r5rs letrec, and therefore I am happy to keep calling an interpreter pure if, like a letrec, it has to read the whole "toplevel program" and expand it in its entirety before evaluating it. In the context if a REPL, one probably will want some wrapper like (program ---) to distinguish the sequence of expressions in a "toplevel program" from the REPL-toplevel, but that is again no different from r5rs letrec (which already comes wrapped in (letrec ---)).

Andre


_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to