[R6RS] Eval vs. phases
    Michael Sperber 
    sperber at informatik.uni-tuebingen.de
       
    Tue Aug  1 01:30:54 EDT 2006
    
    
  
dyb at cs.indiana.edu writes:
> What you propose doesn't directly address the former, but I believe that
> this can be fixed with an extension of <import-phase>, which perhaps you
> are assuming.
Yes, I was.
>  I had earlier suggested:
>
>   <import-phase> = run | expand | (meta n)
> What you propose does address the latter, but not sufficiently.  One
> problem is that transformers can also call eval, and I don't think your
> syntax reflects that possibility.
I guess I was assuming that the embedded (the-library-environment)
refer to the same environment as the the one passed to the outer
`eval'.  Alternatively, `for-eval' could be annotated with a nesting
level the same way as the regular import.
> I've concluded from this that eval import specifications generally must be
> constructed dynamically, with Model 2, to parallel the structure of the
> evaluated form.  
I disagree.  Of course, fixing this statically is a restriction.  But
we're imposing restrictions anyway, supposedly catering to some common
usage.
> Here are some other interesting questions:
>
>  * Is a library invoked just once at meta-level N no matter how many times
>    and from where eval is called at run time?
>
>    Yes, I think.
>
>  * If meta-level N code calls eval to evaluate an expression x, is x
>    treated as if it too were at meta-level N?
>
>    Yes, I think.  This would probably require a level variable to be bound
>    dynamically by the expander and referenced by eval.
I agree on both counts.  But should the `eval' meta-levels really be
the same as the expansion meta-levels?
-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
    
    
More information about the R6RS
mailing list