MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Composable and Compilable Macros: You Want it When? (2002) [39 citations — 2 self]

by Matthew Flatt ,  Compilable Macros
Add To MetaCart

Abstract:

Many macro systems, especially for Lisp and Scheme, allow macro transformers to perform general computation. Moreover, the language for implementing compile-time macro transformers is usually the same as the language for implementing run-time functions. As a side effect of this sharing, implementations tend to allow the mingling of compile-time values and run-time values, as well as values from separate compilations. Such mingling breaks programming tools that must parse code without executing it. Macro implementors avoid harmful mingling by obeying certain macrodefinition protocols and by inserting phase-distinguishing annotations into the code. However, the annotations are fragile, the protocols are not enforced, and programmers can only reason about the result in terms of the compiler's implementation. MzScheme--- the language of the PLT Scheme tool suite---addresses the problem through a macro system that separates compilation without sacrificing the expressiveness of macros.

Citations

161 A modal analysis of staged computation – Davies, Pfenning
157 Revised 5 report on the algorithmic language Scheme – KELSEY, CLINGER - 1998
150 Units: cool modules for HOT languages – Flatt, Felleisen - 1998
128 Eds. Essentials of Programming Languages – Friedman, Wand, et al. - 1992
112 Hygienic macro expansion – Kohlbecker, Friedman, et al. - 1986
74 Macros that Work – Clinger, Rees - 1993
36 A module system for Scheme – Curtis, Rauen - 1990
35 Syntactic abstraction – Dybvig, Hieb, et al. - 1993
28 Macros as multi-stage computations: Typesafe, generative, binding macros – Ganz, Sabry, et al.
27 An idealized MetaML: Simpler, and more expressive – Moggi, Taha, et al. - 1999
26 Syntactic closures – Bawden, Rees - 1988
22 multiple-dispatch syntax extension in Java – Maya - 2002
9 Chez Scheme User’s Guide. Cadence Research Systems – Dybvig - 1998
7 Lisp Lore: A Guide to Programming the Lisp Machine – Bromley - 1986
2 Notes on implementing lisp for the m-460 computer – Hart, Evans - 1964
1 SRFI 19: Defining record types – Kelsey - 1999