ACM Home Page
Please provide us with feedback. Feedback
Composable and compilable macros:: you want it when?
Full text PdfPdf (162 KB)
Source International Conference on Functional Programming archive
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming table of contents
Pittsburgh, PA, USA
Pages: 72 - 83  
Year of Publication: 2002
ISBN:1-58113-487-8
Also published in ...
Author
Matthew Flatt  University of Utah
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 6,   Downloads (12 Months): 48,   Citation Count: 19
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/581478.581486
What is a DOI?

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
 
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
15
 
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