[r6rs-discuss] comment and vote (if allowed) (Elf)

From: AndrevanTonder <andre>
Date: Fri, 24 Aug 2007 17:51:10 -0400 (EDT)

On Fri, 24 Aug 2007, AndrevanTonder wrote:

> On Fri, 24 Aug 2007, Jon Wilson wrote:
>
>> The first claim, otoh, is satisfiable. Most of the existing module
>> systems are fairly similar to one another. The r5.97rs module system is
>> not much like any of them. Unless there is a fundamental manner in
>> which all the existing module systems are broken, ignoring and
>> undermining work that has already been done on module systems is
>> foolish.
>
> I do not agree with this. The draft module system is very much a
> common denominator of MzScheme's, Chez's, and Scheme48's models.

I should probably expand on this: Apart from versioning (which I oppose),
an R6RS-portable library should be translatable to a working
MzScheme module, Chez module, or Scheme48 structure definition, with the
following caveats.

  - MzScheme so far (AFAIK) only has levels -1, 0 and 1 in its
    syntactic tower. R6RS specifies the obvious generalization of
    this to any integer. So strictly speaking, a slight but natural
    extension of MzScheme is required before one can translate the rare
    R6RS libraries needing import levels outside this range to MzScheme.

  - In Chez (again AFAIK) imported bindings are available by default at
    all levels of the syntactic tower. In other words, to translate an
    R6RS library to Chez, simply ignore import level declarations.
    As a result, Chez will not enforce usage of an identifier to be
    restricted to its declared levels. But this is okay,
    since the R6RS draft explicitly allows implementations to
    ignore level enforcement, so the resulting Chez code
    would work in an r6rs-compliant way.

  - Scheme48 only has levels 0, 1, 2, ... in its syntactic tower,
    so strictly speaking, a slight but natural extension of Scheme48 is
    required before one can translate the rare R6RS library
    needing negative levels to a Scheme48 structure.

The MzScheme and Scheme48 syntactic towers have the
feature that the same identifier may have different bindings
at different levels of the sytactic tower, and differ from Chez in
this regard. However, the R6RS library system was designed, in the
spirit of finding a common denominator, so that no syntactically
correct R6RS library can be written that would
observe this difference or be sensitive to it.

Also, the module instantiation models of MzScheme, Chez, and
Scheme48 differ. Again, the draft allows all three of these
instantiation models (and others). R6RS-portable libraries
will therefore not depend on the details of the instantiation
model.

Andre
Received on Fri Aug 24 2007 - 17:51:10 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC