[R6RS] Eval vs. phases
sperber at informatik.uni-tuebingen.de
Fri Jul 28 02:28:43 EDT 2006
OK, first really naive question about this. Why doesn't
<import-spec> --> <import-set>
| (for <import-set> <import-phase>*)
| (for-eval <import-set> <import-phase>*)
cut the mustard?
This would mean that the stuff in <import-set> in a `for-eval' spec is
invoked/visited according to the same rules as stuff in a `for' spec,
and the code passed to `eval' is evaluated as if it were sitting in
the body of a module the (the-library-environment) is sitting in,
where the `for-eval' imports apply rather than the `for' imports.
Alternatively, we might do away with mucking with the library syntax
entirely and just have `the-library-environment' evaluate to an
environment corresponding exactly to the library it's sitting in.
This might entail having to create a separate library sometimes.
I suppose that leaves open the question of what happens to the
libraries at levels >= 1 that have been invoked as part of visiting
the one we're in. I'm assuming these get re-invoked as part of
expanding the eval'ed expression. (I'm not sure I understand the
semantics of invocation correctly---with re-invoke, I mean that the
(instances of the?) newly invoked libraries don't share state with the
(instances of the?) same libraries invoked at run time.
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
More information about the R6RS