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
Received on Mon Oct 29 2007 - 18:26:40 UTC