Results 1 -
6 of
6
Syntactic Closures
, 1988
"... In this paper we describe syntactic closures. Syntactic closures address the scoping problems that arise when writing macros. We discuss some issues raised by introducing syntactic closures into the macro expansion interface, and we compare syntactic closures with other approaches. Included is a ..."
Abstract
-
Cited by 29 (3 self)
- Add to MetaCart
In this paper we describe syntactic closures. Syntactic closures address the scoping problems that arise when writing macros. We discuss some issues raised by introducing syntactic closures into the macro expansion interface, and we compare syntactic closures with other approaches. Included is a complete implementation.
Syntactic Abstraction in Scheme
- Lisp and Symbolic Computation
, 1992
"... Naive program transformations can have surprising effects due to the interaction between introduced identifier references and previously existing identifier bindings, or between introduced bindings and previously existing references. These interactions can result in the inadvertent binding, or captu ..."
Abstract
-
Cited by 20 (2 self)
- Add to MetaCart
Naive program transformations can have surprising effects due to the interaction between introduced identifier references and previously existing identifier bindings, or between introduced bindings and previously existing references. These interactions can result in the inadvertent binding, or capturing, of identifiers. A further complication results from the fact that the transformed program may have little resemblance to the original program, making correlation of source and object code difficult. We address both the capturing problem and the problem of source-object code correlation. Previous approaches to the capturing problem have been both inadequate and overly restrictive, and the problem of source-object code correlation has been largely unaddressed. Our approach is based on a new algorithm for implementing syntactic transformations...
Expansion-Passing Style: A General Macro Mechanism
- Lisp and Symbolic Computation
, 1988
"... The traditional Lisp macro expansion facility inhibits several important forms of expansion control. These include selective expansion of subexpressions, expansion of subexpressions using modified expansion functions, and expansion of application and variable expressions. Furthermore, the expansion ..."
Abstract
-
Cited by 13 (1 self)
- Add to MetaCart
The traditional Lisp macro expansion facility inhibits several important forms of expansion control. These include selective expansion of subexpressions, expansion of subexpressions using modified expansion functions, and expansion of application and variable expressions. Furthermore, the expansion algorithm must treat every special form as a separate case. The result is limited expressive power and poor modularity. We propose an alternative facility that avoids these problems, using a technique called expansion-passing style (EPS). The critical difference between the facility proposed here and the traditional macro mechanism is that expansion functions are passed not only an expression to be expanded but also another expansion function. This function may or may not be used to perform further expansion. The power of this technique is illustrated with several examples. Most Lisp systems may be adapted to employ this technique.
A confluent calculus of macro expansion and evaluation
- PROC. 1992 ACM CONFERENCE ON LISP AND FUNCTIONAL PROGRAMMING
, 1992
"... ..."
Manuel Serrano
, 1994
"... this documentation is therefore a mere comparison to it. 2 Bigloo vs Scheme ..."
Abstract
- Add to MetaCart
this documentation is therefore a mere comparison to it. 2 Bigloo vs Scheme
Macros that Reach Out and Touch Somewhere
"... 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 ..."
Abstract
- Add to MetaCart
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 textual 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.

