[r6rs-discuss] Interpreters need not apply?

AndrevanTonder andre at het.brown.edu
Wed Mar 7 14:31:27 EST 2007


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




More information about the r6rs-discuss mailing list