[comp.lang.scheme] hygienic macro expansion

matthias@leto.rice.edu (Matthias Felleisen) (03/29/90)

Recent references to "hygienic macro expansion" [1] on this mailing
list, in technical reports, and in publications indicate that there is
a prevailing misunderstanding about the term.  Our original paper
proved a simple idea: there are macro expansion ALGORITHM(s) that
prevent the accidental capture of free variables by macro-introduced
bindings, and it is therefore unnecessary [indeed we argued that it
was dangerous] to rely on the MACRO PROGRAMMER (macrologist) to do so.
We showed that this is possible by using the simple, existing macro
tools of Lisp as a "target" macro system.  This may also be possible
with other target systems such as syntactic closures [2] or other
macro tools, but this is besides the point.  Macrologists can program
safely in all systems but the point of hygienic expansion is that a
system builder can ENFORCE such a discipline with an appropriate macro
expander.

-- Bruce Duba and Matthias Felleisen, Rice University


[1] {Kohlbecker E., D.P. Friedman, M. Felleisen, and B.F. Duba}.
Hygienic macro expansion. In {\it Proc. 1986 ACM Conference on Lisp
and Functional Programming}, 1986, 151--161.

[2] {Bawden, A. and J. Rees}. Syntactic closures. In {\it Proc. 1988
ACM Conference on Lisp and Functional Programming}, 1988, 86--95.