[r6rs-discuss] Comment 92: Phase semantics
andre at het.brown.edu
Fri Dec 22 04:59:28 EST 2006
Perhaps the following can be clarified:
> In the existing implementation approaches, enforcing the
> connection goes with instantiating libraries separately for each
> phases (i.e. PLT Scheme and Van Tonder enforce the connection,
> Ghuloum/Dybvig does not). Whether this correlation is for
> technical reasons or a matter of taste is unclear, but separating
> phase instances enables a certain implementation technique for
> enforcing levels, ...
The question of enforcing levels is orthogonal to whether libraries
are instantiated once or separately for each level. In my implementation,
levels are always enforced, even when the option is chosen to instantiate
libraries only once (so obviously my implementation technique for enforcing
levels has nothing to do with separating phase instances).
> and enforcing levels seems to make more sense
> when the meaning of an identifier is potentially different (in
> some sense) in different phases. In contrast, when libraries are
> instantiated once for all phases, requiring the programmer to
> specify levels seems redundant; phase shifts can always be
> determined automatically.
I disagree that an implementation, such as mine, is doing something redundant
if it enforces levels even when libraries are instantiated only once.
The point of enforcing levels in this case remains, namely to give the user
control over the language available at each level. A good example is the
hypothetical library (r5rs), which provides syntax-rules, and only syntax-rules,
at level 1, but not at level 0. This can be done even if libraries are
instantiated only once, as long as levels are enforced. It cannot be done if
levels are inferred.
More information about the r6rs-discuss