ReadMe
Robert Hieb & Kent Dybvig
90/10/07
modified 91/01/02

The following source files are contained in this directory:

    hooks.ss             ; system support
    boot.ss              ; macros for bootstrapping
    expand.ss            ; the bully---
    init.ss              ; a few inits
    load.ss              ; loads and reloads the system
    loadpp.ss            ; loads from preprocessed files
    macro-defs.ss        ; and, or, cond, case, etc.
    quasiquote.ss
    quasisyntax.ss
    syntax-dispatch.ss
    syntax-rules.ss
    structure.ss

This directory also contains "preprocessed" versions of several of the
above files:

    expand.pp
    quasisyntax.pp
    syntax-rules.pp
    init.pp
    syntax-dispatch.pp

The preprocessed versions have been run through Chez Scheme's macro
expander after boot.ss was loaded to produce code that does not contain
any macro calls.  These files can be loaded using loadpp.ss to
bootstrap the macro system.  The file load.ss can be used to load from
the source files if your system supports extend-syntax or if you
rewrite the macros contained in boot.ss in terms of your existing macro
interface.


The syntactic forms define, define-syntax, quote, lambda, if, set!,
begin, letrec, application, variable reference, and literal reference
are built-in as core forms in expand.ss.  Most of the remainding R4RS
syntactic forms are contained in macro-defs.ss, quasiquote.ss, and
syntax-rules.ss.  No definition is given for "delay".


Several additional features are supported but not documented in
detail.  They are syntax-case, quasisyntax, and syntax-dispatch.  The
syntax of define has been extended to allow "(define id)".


The "core" forms generated by the expander are the following:

    top-level (define id exp)
    (begin exp exp ...)
    (quote datum)
    (lambda formals exp)
    (if exp exp exp)
    (set! id exp)
    (letrec ((id exp) ...) exp)
    id
    (exp exp ...)

The final syntax of core forms may be altered by changing the "output"
procedures in expand.ss.


We have attempted to maintain R4RS compatibility where possible.
Please let us know if there is some incompatibility that is not flagged
as such.  The incompatibilities should be confined to hooks.ss,
load.ss, loadpp.ss and boot.ss.
