| Kohlbecker, E., Friedman, D.P., Felleisen, M., Duba, B.: Hygienic macro expansion. In: Symposium on Lisp and Functional Programming, ACM (1986) 151--161 |
....he didn t intend and for which he doesn t warrant it to be correct. Treading this ne line, techniques that might be loosely characterized as static typing are planned for a future version of Kernel (or a descendant language) The uid case concerns environment capturing, noted in x4.1.2. [KoFrFeDu86] cites Barendregt for the informal term hygiene: H.P. Barendregt, Introduction to the lambda calculus , Nieuw Archief voor Wisenkunde 2 4 (1984) pp. 337 372; it also notes the formal property of being free for in [Kle52] where it occurs in Kleene s x34 as an auxiliary to his de nition of free ....
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba, \Hygienic macro expansion", Proceedings of the 1986 ACM Conference on Lisp and Functional Programming, 1986, pp. 151-159.
....he didn t intend and for which he doesn t warrant it to be correct. Treading this fine line, techniques that might be loosely characterized as static typing are planned for a future version of Kernel (or a descendant language) 24The fluid case concerns environment capturing, noted in 4.1.2. 25[KoFrFeDu86] cites Barendregt for the informal term hygiene: H.P. Barendregt, Introduction to the lambda calculus , Nieuw Arcbier voor Wisenkunde 2 4 (1984) pp. 337 372; it also notes the formal property of being free for in [Kle52] where it occurs in Kleene s 34 as an auxiliary to his definition of free ....
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba, "Hygienic macro expansion", Proceedings of the 1986 ACM Conference on Lisp and Functional Programming, 1986, pp. 151-159.
....USA. Copyright 2002 ACM 1 58113 487 8 02 0010 . 5. 00 pattern matching transformations, but may perform arbitrary computation during expansion [12, 17, 3, 24, 26, 1] In addition, macros may manipulate abstract syntax enriched with lexical information instead of manipulating raw source text [15, 2, 4, 8], which means that macro defined constructs can be assigned a meaning independent of details of the macro s expansion (e.g. whether the macro introduces a local variable named temp or happens to call the car function) Finally, in the Lisp and Scheme tradition where macros are themselves defined ....
....nor produces a store. 2. All phase 1 code can be stripped before execution of the designated main module with no effect on the result, since applying invoke with phase 0 executes only phase 0 code. 6 Related Work Lexically scoped macros. Kohlbecker et al. s definition of hygienic macros [15] initiated a chain of research in Scheme macros, leading to the syntax case system of Dybvig et al. 8] Notable points along the way include Bawden and Rees s syntactic closures [2] and Clinger and Rees s lexically scoped, pattern matching macros [4] Our work builds directly on the syntax case ....
E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In Proc. ACM Conference on Lisp and Functional Programming, pages 151--181, Aug. 1986.
....Pennsylvania, USA. c #2002 Oleg Kiselyov. variable bindings and break the block structure of the program. For instance, free identi ers in user code may be inadvertently captured by macro generated bindings, which leads to insidious bugs. This danger is very well documented, for example in [8], 1] Lisp community has developed techniques [1] that help make macros safer, but they rely on e orts and care of an individual macro programmer. The safety is not built into the system. Furthermore, the techniques complicate the macro code and make it more bug prone. Scheme community has ....
....of the lexical scope by default. In limited circumstances, exceptions to the block structure preserving policy of macros are useful and can be allowed. These exceptions however should be statically visible. A number of experimental macro systems with the above properties have been built ([8], 9] 1] 2] 4] 13] The least powerful and the most restrictive set of common features of these macro systems has been standardized in R5RS [7] An earlier version of that system has been mentioned in the previous Scheme report, R4RS, and expounded in [3] The R5RS macro system permits no ....
[Article contains additional citation context not shown here]
Eugene E. Kohlbecker Jr., Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In Proc. 1986 ACM Conference on Lisp and Functional Programming, pp. 151-161.
....as such it is lexically scoped. More precisely: every occurrence of a variable is bound to the value that is lexically in scope at the occurrence site in the original source program, before any template expansion. This obvious sounding property is what the Lisp community calls hygienic macros [10]. In a meta programming setting it is not nearly as easy to implement as one might think. The quasi quote notation is implemented on top of the quotation monad (Section 6) and we saw there that variables bound inside quasi quotes must be renamed to avoid inadvertent capture (the cross2a ....
....template meta programming seriously for over twenty years [11] and modern Scheme systems support elaborate towers of language extensions based entirely on macros. Early designs suffered badly from the name capture problem, but this problem was solved by the evolution of hygienic 12 macros [10, 4]; Dybvig, Hieb and Bruggeman s paper is an excellent, self contained summary of the state of the art [7] The differences of vocabulary and world view, combined with the subtlety of the material, make it quite difficult to give a clear picture of the differences between the Scheme approach and ....
E. Kohlbecker, D. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In ACM Symposium on Lisp and Functional Programming, pages 151--161. ACM, 1986.
....cons to indicate destructuring, but this can lead to confusion because not all pattern operations have obvious analogues in Lisp, and not all Lisp constructs make sense in patterns. Alternatively, the pattern language may resemble Lisp data structures, e.g. by using a pair to match a pair (as in [2] and [4] but this leaves no room to express additional pattern operations without introducing special keywords. Such languages quickly become verbose and baroque. We regard this area as suitable for future research and do not choose to address it at this time. 5 Previous work Many users of ....
....language could solve scoping problems once and for all. While we believe that it is good to have 13 convenient notction for defining the most common kinds of mcros, we believe thct there ere occsions in which nothing less than the full power of Lisp will suffice. Hygienic mcro expcnsion [2] is the only other complete solution to the mcro scoping problems of which we ere ewere. Hygienic expcnsion works by pinting the entire input expression with some distinctive color before passing it to the expcnder. Then the returned replcement expression is excmined to find those pcrts thct ....
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. "Hygienic macro expansion." 1936 ACM Conference on Lisp and Functional Programming, pp. 151-159.
....cons to indicate destructuring, but this can lead to confusion because not all pattern operations have obvious analogues in Lisp, and not all Lisp constructs make sense in patterns. Alternatively, the pattern language may resemble Lisp data structures, e.g. by using a pair to match a pair (as in [2] and [4] but this leaves no room to express additional pattern operations without introducing special keywords. Such languages quickly become verbose and baroque. We regard this area as suitable for future research and do not choose to address it at this time. 5 Previous work Many users of ....
....language could solve scoping problems once and for all. While we believe that it is good to have 13 a convenient notation for defining the most common kinds of macros, we believe that there are occasions in which nothing less than the full power of Lisp will suiTice. Hygienic macro expansion [2] is the only other complete solution to the macro scoping problems of which we are aware. Hygienic expansion works by painting the entire input expression with some distinctive color before passing it to the expander. Then the returned replacement expression is examined to find those parts that ....
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. "Hygienic macro expansion." 1986 ACM Conference on Lisp and Functional Programming, pp. 151-159.
....a YACC or similar parser generator that allows them to introduce new syntax [Mauny, Rauglaudre 1992] If the new syntax is to be mixed with the old one, the new syntax must be quoted in some way. Instead, we can freely intermix new and old syntax without special quotations. Hygienic macros [Kohlbecker, et al. 1986] share many of the same goals as our syntax extensions; however, these macros account only for macro calls and not for liberally introducing new syntax. Hygienic macros employ a multiple pass time stamping algorithm to prevent variable capture; this algorithm is, at least operationally, different ....
E. Kohlbecker, D.P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. Proc. 1986 ACM Conference on Lisp and Functional Programming.
....in the extended environment; an optional fender, which is a Scheme predicate evaluated in the extended environment and guarding the template; a template specifying how to construct the corresponding residual term. Hygienic in the sense that no names are captured during macro expansion [30]. 17 (case syntax (hheadi . hconstant identifieri . hclausei . else htemplatei] where hheadi : hidentifieri j [hidentifieri htypei] hclausei : hpatterni . htemplatei] j [ hpatterni . hfenderi htemplatei] hpatterni : hliterali j (hpatterni . htemplatei : ....
....from symbolic execution to symbolic interpretation to automate the annotation process of online partial evaluation [8, 37] 23 Abstract syntax rewriting (macros) The idea is as old as programming languages. Macros were fraught with name capture peril until the advent of hygienic macro expansion [30]. Our domain specific language over residual abstract syntax follows the lead of Chez Scheme s syntactic extensions [24] namely, it uses pattern matching, fenders (i.e. guards) and with expressions. Let insertion: Mogensen suggested to insert residual let expressions to handle partially static ....
Eugene E. Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In William L. Scherlis and John H. Williams, editors, Proceedings of the
....systems operate on characters. Such macros have no understanding of the structure of the language they are generating, and in particular, they are blind to the scoping of variables. As a result, classical Lisp macros sometimes have bugs caused by inadvertent variable captures. Modern Scheme macros [KFFD86, BR88, CR91, Cli91, DHB92, KCR98] have the ability to avoid capture problems by generating output that specifies the environment in which each variable is to be resolved. The programmer can easily write macros that behave properly with respect to the rules of lexical scoping. The details of this namespace management technology ....
Eugene M. Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In Proc. Symposium on Lisp and Functional Programming, pages 151--161. ACM, August 1986.
....of the # order from param to param # . Second, for all pairs of parameter lists of the form #p1#1 and #p2#2 , if #(p1) equals #(p2) then p1 must equal p2 . Hygienic Macros To achieve hygienic macros, we automatically # convert all identifiers inside macro bodies during expansion. Unlike Scheme [12, 6, 8], we also # convert free identifiers, since they cannot be guaranteed to bind to anything sensible in the context of an invocation. As we thus # convert all identifiers, the macro needs only recognize all parse tree nodes of nonterminal id ; that is, no symbol table information is required. To ....
E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In Lisp and Functional Programming, pages 151--161, 1986.
....principles. Macro designers often find themselves forced to describe macros at the level of program text or syntax trees, and to address the inevitable hygiene problems and scoping problems using gensym (or freshness conditions) and many unintuitive equality and inequality tests on variables names [19]. Not only are such low level specifications hard to communicate (making macros acquire the appearance of being unsystematic) they are also at odds with static typing: if variable names and their binding relationships are not known until after macro expansion, it becomes hard (if not impossible) ....
....scoping and or variable capture. These problems generally arise from an overly simplistic view of programs as data, such as in early LISP systems or in C. The Scheme community has had a substantial role in recognizing and addressing this problem and promoting the notion of hygienic macro expansion [19, 9]. More recently, there have been more sophisticated proposals, like higher order abstract syntax (HOAS) 33, 21, 17, 12] and FreshML [34] The key contribution of all these proposals is to provide a means to express the fact that programs are not just data. ffl MacroML does not allow macros ....
Kohlbecker, E., Friedman, D. P., Felleisen, M., and Duba, B. Hygienic macro expansion. In Proceedings of the ACM Conference on LISP and Functional Programming (Cambridge, MA, Aug. 1986), R. P. Gabriel, Ed., ACM Press, pp. 151--181.
No context found.
Kohlbecker, E., Friedman, D.P., Felleisen, M., Duba, B.: Hygienic macro expansion. In: Symposium on Lisp and Functional Programming, ACM (1986) 151--161
No context found.
E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In Proceedings of the 1986.
No context found.
E. Kohlbecker, D.P. Friedman, M. Felleisen, and B. Duba, "Hygienic Macro Expansion," Proc. ACM Conf. LISP and Functional Programming, R.P. Gabriel, ed., pp. 151--181, Aug. 1986.
No context found.
E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In Proceedings of the 1986.
No context found.
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In Proceedings of the ACM Conference on LISP and Functional Programming, pages 151--181, 1986.
No context found.
Eugene E. Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce F. Duba. Hygienic macro expansion. In ACM Symposium on Lisp and Functional Programming, pages 151--161, 1986.
No context found.
E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In Lisp and Functional Programming, pages 151--161, 1986.
No context found.
Kohlbecker, E. E., Friedman, D.P., Felleisen, M., Duba, B.: Hygienic macro expansion. In Proc. ACM Conference on Lisp and Functional Programming, pp. 151-161 (1986)
No context found.
Eugene M. Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In Proc. Symposium on Lisp and Functional Programming, pages 151-161. ACM, August 1986.
No context found.
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In 1986.
No context found.
E. Kohlbecker, D.P. Friedman, M. Felleisen, and B. Duba, "Hygienic Macro Expansion," Proc. ACM Conf. LISP and Functional Programming, R.P. Gabriel, ed., pp. 151--181, Aug. 1986.
No context found.
E. Kohlbecker, D.P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. Proc. 1986 ACM Conference on Lisp and Functional Programming.
No context found.
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In Proceedings of the ACM Conference on LISP and Functional Programming, pages 151--181, 1986.
First 50 documents Next 50
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC