[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

another macro system



First, I apologize for sending this out at the last minute before next
week's Scheme meeting.  At the time of his death, Bob Hieb and I were
planning to get this out the door by mid May, and it has not been easy
for me to work on it without him.  I was not sure until this week that
I would even be ready to release anything before the meeting.  I
considered waiting until after the meeting, but decided I might as well
get this out in order to get feedback next week if possible.

We have designed and implemented a macro system that is vastly superior
to the low-level system described in the Revised^4 Report; in fact, it
essentially eliminates the low level altogether.  We also believe it to
be superior to the other proposed low-level systems as well, but each
of you can judge that for yourself.  We have accomplished this by
"lowering the level" of the high-level system slightly, making pattern
variables ordinary identifiers with essentially the same status as
lexical variable names and macro keywords, and by making "syntax"
recognize and handle references to pattern variables.  We are not sure
if the new system and syntactic closures can coexist, though we think
they may be able to.  In either case, we're not sure there's anything
significant that can be done with syntactic closures that can't be done
with our new system, and there are things it can do that can't
currently be done with syntactic closures.

We have not prepared a formal proposal (due to lack of time), but we
have prepared the following: a technical report giving a user's-level
view (including an extensive set of examples) of the macro system and
its operation, another technical report giving a more formal treatment,
background, and justification of the system, and a complete (all RRRS
syntactic forms, including internal define), robust, and efficient
implementation of the system.  The second technical report is not quite
finished and will have to wait until after we return from San Francisco
for release, but the first TR and the implementation are available
now.

They can be obtained via anonymous ftp from iuvax.cs.indiana.edu in the
file pub/scheme/syntax-case.tar.Z.  This is a compressed tar file of
the directory syntax-case, which contains both the source for the macro
system and a postscript version of the report.  The ReadMe file in
pub/scheme/syntax-case lists the files and gives directions for running
the system, including instructions on customizing for implementations
other than Chez Scheme.  Only a few hooks need be supplied.  The name
of the file holding the TR is syntax-case.ps.

I will have copies of the TR with me at LFP92 if you do not get a
chance to run one off.

Kent Dybvig

R. Kent Dybvig                 | Computer Science Department
dyb@cs.indiana.edu             | Indiana University
812/855-6486                   | Bloomington, IN 47405