[Larceny-users] Libraries and syntax-case (van Tonder) implementation update

AndrevanTonder andre at het.brown.edu
Mon Oct 29 18:27:47 EDT 2007


This is to announce that a new version of my
portable

     R6RS Libraries and Syntax-case

implementation is available at:

    http://www.het.brown.edu/people/andre/macros

Features:

   - Fully R6RS-compliant implementation of:

      * R6RS libraries and R6RS toplevel programs.
      * (rnrs syntax-case)
      * (rnrs eval)
      * (rnrs r5rs)
      * (rnrs control)

   - Stubs for various other r6rs libraries provided.

   - Identifier import levels are checked at expand-time
     with helpful and precise syntax error messages.
     This provides better portability guarantees than
     an implicitly-phased library implementation such as
     Psyntax (which allows out-of-phase references that
     would fail on, e.g. MzScheme).

   - An interactive toplevel (REPL) hook is provided.
     Libraries can be defined at and imported into the
     interactive toplevel as in the ERR5RS proposal.

   - Dynamic loading of library definitions from files
     is supported as in the ERR5RS proposal via the
     procedure LOAD in the library (rnrs load).

   - Separate (incremental) compilation is supported fully.
     The meaning of an R6RS library or program never depends
     on whether it is expanded and run in the same session
     or in separate sessions.

   - As a portability measure, we raise syntax
     errors in known cases where the MzScheme and
     Psyntax interpretations of free-identifier=? would give
     different results.

   - We perform the optional check in chapter 8 detecting
     illegal redefinitions in bodies.

   - A fully compatible and efficient explicit renaming
     macros library is provided.  It is efficient because
     we do not use the mark-antimark algorithm decribed in
     the R6RS.  Implementations based on the mark-antimark
     algorithm cannot do this with less than quadratic
     complexity, whereas we do it with linear complexity.

   - A facility (rnrs eval reflection) is provided for
     inspecting environments.  Very useful for displaying
     import and export sets of libraries and levels of
     identifiers.

   - An R5RS library (r5rs) is provided.

   - The expander is written in R5RS Scheme.  It is therefore
     easily modifiable without the complexity of
     metacircular bootstrapping.

Andre van Tonder



More information about the Larceny-users mailing list