Abstract:
Macros are reflective tools that operate on the representation of programs. Though having been used, and still being useful, for more than thirty years, their semantics and pragmatics are still unclear. This paper proposes a new model to understand the macroexpansion process; this model is based on a reflective tower of macroexpansion engines. 1 Introduction Macros are definitely a forte of Lisp dialects. They confer upon the powerful users a means to adapt their language to their problems and this is, in our mind, one of the key reasons for Lisp's longevity. Despite the various attempts to standardize macros [Ste90, CR91b] and even if most of them are just quite simple abbreviations, they still represent one of the thorniest problems that occur when porting code between dialects of Lisp: a sure sign of their ambiguous nature. Even in Scheme, macros still have a dark side with respect to their scope, their extent and their meaning i.e., their definition language. This paper proposes a...
Citations
|
157
|
The revised report on the algorithmic language Scheme
– Clinger, Rees
- 1991
|
|
112
|
Hygienic macro expansion
– Kohlbecker, Friedman, et al.
- 1986
|
|
74
|
Macros that Work
– Clinger, Rees
- 1993
|
|
63
|
The mystery of the tower revealed: A non-reflective description of the reflecitve tower
– Wand, Friedman
- 1988
|
|
58
|
The implementation of procedurally reflective languages
– Rivi`eres, Smith
- 1984
|
|
39
|
The evolution of LISP
– Steele, Gabriel
- 1993
|
|
35
|
Syntactic abstraction
– Dybvig, Hieb, et al.
- 1993
|
|
26
|
Syntactic closures
– Bawden, Rees
- 1988
|
|
21
|
M-LISP: A representation-independent dialect of LISP with reduction semantics
– Muller
- 1992
|
|
15
|
Modules, macros and Lisp
– Queinnec, Padget
- 1991
|
|
12
|
Expansion-passing style: A general macro mechanism
– Dybvig, Friedman, et al.
|
|
11
|
Interactive modular programming in scheme
– Tung
- 1992
|
|
6
|
Talking about modules and delivery
– Davis, Parquier, et al.
- 1994
|
|
5
|
An Overview of EuLisp
– Padget, Nuyens, et al.
- 1993
|
|
2
|
de Maricourt. Macro-expansion en Lisp, s'emantique et r'ealisation. Th`ese d'universit'e, Universit'e Paris 7
– Dumesnil
- 1995
|
|
2
|
A staging calculus and its application to the verification of translators
– Muller
- 1994
|
|
2
|
langages Lisp. Inter
– Les
- 1994
|