|
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 macro-definition 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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
 |
2
|
|
| |
3
|
|
 |
4
|
|
 |
5
|
|
 |
6
|
|
| |
7
|
R. K. Dybvig. Chez Scheme User's Guide. Cadence Research Systems, 1998.
|
| |
8
|
|
 |
9
|
|
| |
10
|
|
 |
11
|
Steven E. Ganz , Amr Sabry , Walid Taha, Macros as multi-stage computations: type-safe, generative, binding macros in MacroML, Proceedings of the sixth ACM SIGPLAN international conference on Functional programming, September 03-05, 2001, Florence, Italy
|
| |
12
|
T. P. Hart and T. G. Evans. Notes on implementing lisp for the m-460 computer. In E. C. Berkeley and D. G. Bowbrow, editors, The Programming language LISP: Its Operation and Applications, pages 191--203. MIT Press, 1964.
|
| |
13
|
R. Kelsey. SRFI 19: Defining record types, 1999. http://srfi.schemers.org/srfi-9/.
|
 |
14
|
N. I. Adams, IV , D. H. Bartley , G. Brooks , R. K. Dybvig , D. P. Friedman , R. Halstead , C. Hanson , C. T. Haynes , E. Kohlbecker , D. Oxley , K. M. Pitman , G. J. Rozas , G. L. Steele, Jr. , G. J. Sussman , M. Wand , H. Abelson, Revised5 report on the algorithmic language scheme, ACM SIGPLAN Notices, v.33 n.9, p.26-76, Sept. 1, 1998
[doi> 10.1145/290229.290234]
|
 |
15
|
Eugene Kohlbecker , Daniel P. Friedman , Matthias Felleisen , Bruce Duba, Hygienic macro expansion, Proceedings of the 1986 ACM conference on LISP and functional programming, p.151-161, August 1986, Cambridge, Massachusetts, United States
[doi> 10.1145/319838.319859]
|
| |
16
|
|
| |
17
|
D. A. Moon. MACLISP Reference Manual. MIT Press, 1974.
|
 |
18
|
|
| |
19
|
C. Queinnec. Macroexpansion reflective tower. In Proc. Reflections Conference, pages 93--194, Apr. 1996.
|
| |
20
|
J. Rees. Another module system for Scheme, 1994. Scheme48 documentation.
|
| |
21
|
M. Serrano. Bigloo: A "practical Scheme compiler", 2002.
|
| |
22
|
A. Shalit. The Dylan Reference Manual. Addison-Wesley, 1996.
|
| |
23
|
|
| |
24
|
G. L. Steele, Jr. and G. J. Sussman. The revised report on SCHEME: A dialect of LISP. Technical Report 452, MIT, Jan. 1978.
|
 |
25
|
|
 |
26
|
|
| |
27
|
A. K. Wright. Pattern Matching for Scheme, Mar. 1996.
|
CITED BY 19
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Arjun Guha , Jacob Matthews , Robert Bruce Findler , Shriram Krishnamurthi, Relationally-parametric polymorphic contracts, Proceedings of the 2007 symposium on Dynamic languages, October 22-22, 2007, Montreal, Quebec, Canada
|
|
|
|
|
|
|
|
|
|
|
|
|
|