Composable and compilable macros -: You want it when?

被引:39
|
作者
Flatt, M [1 ]
机构
[1] Univ Utah, Salt Lake City, UT 84112 USA
关键词
languages; design; macros; modules; language tower;
D O I
10.1145/583852.581486
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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 rum-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.
引用
收藏
页码:72 / 83
页数:12
相关论文
共 50 条