[Larceny-users] bug: export levels of ... from (rnrs)

Derick Eddington derick.eddington at gmail.com
Wed Sep 16 04:06:57 EDT 2009


On Wed, 2009-09-16 at 00:56 -0700, Derick Eddington wrote:
> IIUC, according to R6RS, ... is exported from (rnrs) with levels 0 and
> 1.  This means if ... is used at level 2, then to get ... from (rnrs),
> (rnrs) needs to be imported for (meta 1) so that ... is imported at
> levels 1 and 2.
> [...]

BTW, I've found it quite confusing and inconsistent that R6RS exports
some bindings at levels other than 0 so that these bindings do not need
explicit level declarations to be imported at levels other than 0 (this
convenience is the entire purpose of "implicit phasing"), and in
"explicit-phasing" systems, these bindings get the benefit of "implicit
phasing" but all other bindings do not get the benefit.  If the purpose
of "explicit phasing" is to make it explicitly declared at what phases
bindings exist, then how can you reconcile this "implicit phasing" (i.e.
lack of explicit declarations) for these R6RS bindings?  If the
convenience of not having to make explicit import level declarations for
these bindings is good, then why shouldn't all bindings get this
convenience?, i.e. always "implicit phasing" like psyntax systems and
Ypsilon.  Also, these export levels other than 0 really further
complicate the already-confusing "explicit phasing" levels arithmetic
necessary to actually use your imports.  I doubt "explicit phasing"
helps many people actually understand the ramifications of instantiation
phases because they just try to do the level arithmetic voodoo, probably
with some unnecessary levels thrown in (which is what I've seen people
do) because it's confusing, and continue without further thought.

-- 
: Derick
----------------------------------------------------------------




More information about the Larceny-users mailing list