By providing a macro facility, languages such as Scheme and Common Lisp allow users to define new special forms as local, syntactic program transformations. This allows users to abstract away what would otherwise be repetitive or cumbersome syntax. One limitation to the power of macro facilities is that only textually local transformations can be defined—the user cannot, for example, define a delay macro which automatically inserts calls to force at all required points in the program. In this paper, we present a new kind of macro, called a data path macro, in which transformations can take place at any point along the dataflow path that includes the macro invocation. The heart of the data path macro facility is a dataflow analysis mechanism that allows the user to easily request powerful data flow analyses.
[1]
D. H. Bartley,et al.
Revised4 report on the algorithmic language scheme
,
1991,
LIPO.
[2]
Olin Shivers,et al.
Control-flow analysis of higher-order languages of taming lambda
,
1991
.
[3]
Philip Wadler,et al.
Comprehending monads
,
1990,
LISP and Functional Programming.
[4]
Daniel G. Bobrow,et al.
Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991)
,
1991,
SGAR.
[5]
R. Kent Dybvig,et al.
Expansion-passing style: beyond conventional macros
,
1986,
LFP '86.
[6]
Eugenio Moggi,et al.
Computational lambda-calculus and monads
,
1989,
[1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.