First-class macros have types

In modern Scheme, a macro captures the lexical environment where it is defined. This creates an opportunity for extending Scheme so that macros are first-class values. The key to achieving this goal, while preserving the ability to compile programs into reasonable code, is the addition of a type system. Many interesting things can be done with first-class macros, including the construction of a useful module system in which modules are also first-class. Clams got legs! — B.C.

[1]  Kent M. Pitman,et al.  Special forms in Lisp , 1980, LISP Conference.

[2]  R. Kent Dybvig,et al.  Extending the scope of syntactic abstraction , 1999, POPL '99.

[3]  Jonathan Rees,et al.  Syntactic closures , 1988, LISP and Functional Programming.

[4]  William Clinger Hygienic macros through explicit renaming , 1991, LIPO.

[5]  Jonathan Rees,et al.  Macros that work , 1991, POPL '91.

[6]  David B. MacQueen Modules for standard ML , 1984, LFP '84.

[7]  Pavel Curtis,et al.  A module system for scheme , 1990, LISP and Functional Programming.

[8]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[9]  Matthias Felleisen,et al.  Hygienic macro expansion , 1986, LFP '86.

[10]  Jonathan A. Rees Another Module System for Scheme , 1993 .

[11]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[12]  Robert Hieb,et al.  Syntactic abstraction in scheme , 1992, LISP Symb. Comput..

[13]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[14]  Robert Hieb,et al.  Revised 5 Report on the Algorithmic Language , 1999 .