Filters








254 Hits in 2.4 sec

Debugging hygienic macros

Ryan Culpepper, Matthias Felleisen
2010 Science of Computer Programming  
This lack makes it difficult for programmers to debug their macros and for novices to study the behavior of macros.  ...  Like Lisp macros, their predecessors, Scheme macros expand source programs into a small core language; unlike Lisp systems, Scheme macro expanders preserve lexical scoping, and advanced Scheme macro systems  ...  Acknowledgments We are grateful to Matthew Flatt for his help and guidance in instrumenting the PLT Scheme macro expander. We thank Sam Tobin-Hochstadt for his feedback and bug reports.  ... 
doi:10.1016/j.scico.2009.06.001 fatcat:coti62bvpreohgb242eo4xs6se

Multi-Stage JavaScript [article]

Anthony Savidis, Yannis Apostolidis, Yannis Lilis
2018 arXiv   pre-print
All macros at the same nesting belong to the same stage, with the outer stage collecting the macros affect-ing only the main program.  ...  Finally, to enable debugging stages in any browser we implemented a pure JavaScript client, communicating with the extended Spider Monkey, and offering the necessary AST display and unparsing that a browser  ...  This led us to support stage debugging by fully reusing browser debug tools, and adding only the AST-specific facilities (also no wheels reinvented).  ... 
arXiv:1807.01611v1 fatcat:v75wygujtbaw3cg4ulcj45blsa

The Java syntactic extender (JSE)

Jonthan Bachrach, Keith Playford
2001 SIGPLAN notices  
The design is based on the Dylan macro system, but exploits Java's compilation model to offer a full procedural macro engine.  ...  In this paper we introduce a macro facility, called the Java Syntactic Extender (JSE), with the superior power and ease of use of Lisp macro systems, but for Java, a language with a more conventional algebraic  ...  TRACING AND DEBUGGING Without tracing and debugging mechanisms, macros can be difficult to use.  ... 
doi:10.1145/504311.504285 fatcat:nh6y6xgeavdxrfummiljnrwn44

The Java syntactic extender (JSE)

Jonthan Bachrach, Keith Playford
2001 Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications - OOPSLA '01  
The design is based on the Dylan macro system, but exploits Java's compilation model to offer a full procedural macro engine.  ...  In this paper we introduce a macro facility, called the Java Syntactic Extender (JSE), with the superior power and ease of use of Lisp macro systems, but for Java, a language with a more conventional algebraic  ...  TRACING AND DEBUGGING Without tracing and debugging mechanisms, macros can be difficult to use.  ... 
doi:10.1145/504282.504285 dblp:conf/oopsla/BachrachP01 fatcat:rccnosar4nh5lj6wuato5rzxdi

Preface to special issue on Generative Programming and Component Engineering (GPCE 2007)

Julia L. Lawall
2010 Science of Computer Programming  
These articles cover a wide range of topics in the area of generative programming and component engineering, including aspects, component frameworks, macros, and monads.  ...  This raises the need for debugging facilities, which are the subject of the article ''Debugging Hygienic Macros'' by Culpepper and Felleisen.  ...  as well as the ability to control variable capture, referred to as macro hygiene.  ... 
doi:10.1016/j.scico.2010.01.005 fatcat:4sozbxdla5ejrjwmr4er4otcki

Binding as sets of scopes

Matthew Flatt
2016 Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - POPL 2016  
the broader adoption and use of hygienic macros.  ...  Finally, the new macro expander is able to provide more helpful debugging information when binding resolution fails.  ...  an important role in characterizing hygienic macro transformers.  ... 
doi:10.1145/2837614.2837620 dblp:conf/popl/Flatt16 fatcat:ez2krxn4cfamzjslh4mrnpv5vy

Expansion-passing style: A general macro mechanism

R. Kent Dybvig, Daniel P. Friedman, Christopher T. Haynes
1988 LISP and Symbolic Computation  
The traditional Lisp macro expansion facility inhibits several important forms of expansion control.  ...  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  ...  (A more sophisticated solution to the capturing problem is provided by hygienic macro expansion [6, 7] . It is possible to combine hygienic expansion and EPS, but we do not address this issue here.)  ... 
doi:10.1007/bf01806176 fatcat:jirurjyev5gbzlt5uikpol7cpi

An implementation of a hygienic syntactic macro system for JavaScript

Hiroshi Arai, Ken Wakita
2010 Workshop on Self-Sustaining Systems on - S3 '10  
Instead of implementing the complex logic of a hygienic macro system from scratch, the proposed method heavily relies on an existing Scheme implementation of its hygienic syntactic macro system.  ...  The article describes an implementation scheme of a hygienic syntactic macro system for JavaScript.  ...  The hygienic macro system was invented by Kohlbecker and others in 1986 [18] and its expressiveness, implementation techniques, and debugging methods were later studied in [7, 10, 13, 15] .  ... 
doi:10.1145/1942793.1942798 dblp:conf/s3/AraiW10 fatcat:sw64mn5blfdaljribedwt7zctu

Syntactic abstraction in scheme

R. Kent Dybvig, Robert Hieb, Carl Bruggeman
1993 LISP and Symbolic Computation  
Source annotations can be passed along by the expander to the evaluator, where they can be used to provide debugging information.  ...  This extends the notion of hygiene to local macro de nitions, which w ere not handled by KFFD algorithm. Like automatic hygiene, however, this transparency is not present in the low-level system.  ... 
doi:10.1007/bf01806308 fatcat:lvmbmhxjezdw7kzyttnsci75xq

Domain specific language implementation via compile-time meta-programming

Laurence Tratt
2008 ACM Transactions on Programming Languages and Systems  
(analogous to LISP macros [Kohlbecker et al. 1986] ).  ...  In this paper I show how expressive DSLs can be hygienically embedded in the Converge programming language using its compile-time meta-programming facility, the concept of DSL blocks, and specialised error  ...  ENSURING THAT EMBEDDINGS WITH AN INTEGRATED EXPRESSION LAN-GUAGE ARE HYGIENIC All of the examples thus far in this paper have been hygienic, which is defined to mean (as in LISP-esque macro systems) that  ... 
doi:10.1145/1391956.1391958 fatcat:ekqgxxwzlbfyvd2v5birrowo7u

Code staging in GNU Guix

Ludovic Courtès
2017 Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences - GPCE 2017  
We explain our journey from traditional Lisp S-expressions to G-expressions, which augment the former with contextual information and ensure hygienic code staging.  ...  To our knowledge, this problem of hygienic staging of a language with macros has not been addressed in literature outside of work on macro expanders [7] .  ...  Code staging is often studied in the context of optimized code generation [1, 10, 11] , or that of hygienic macros [7, 8, 9] .  ... 
doi:10.1145/3136040.3136045 dblp:conf/gpce/Courtes17 fatcat:dsqdhh4kyffgpkxzwb3gp743pm

Sweeten your JavaScript

Tim Disney, Nathan Faubion, David Herman, Cormac Flanagan
2014 Proceedings of the 10th ACM Symposium on Dynamic languages - DLS '14  
In part, this has been due to the difficulty in building expressive hygienic macro systems for such languages.  ...  With lexer and parser separated, we then implement an expressive hygienic macro system for JavaScript called sweet.js.  ...  Conclusion We have presented sweet.js, a hygienic macro system for JavaScript.  ... 
doi:10.1145/2661088.2661097 dblp:conf/dls/DisneyFHF14 fatcat:4wqiwpte3ngyzoa7g5sdskqtge

Sweeten your JavaScript

Tim Disney, Nathan Faubion, David Herman, Cormac Flanagan
2014 SIGPLAN notices  
In part, this has been due to the difficulty in building expressive hygienic macro systems for such languages.  ...  With lexer and parser separated, we then implement an expressive hygienic macro system for JavaScript called sweet.js.  ...  Conclusion We have presented sweet.js, a hygienic macro system for JavaScript.  ... 
doi:10.1145/2775052.2661097 fatcat:ep7p5tmstzcgfac3rxixvh7r7q

Programmable syntax macros

Daniel Weise, Roger Crew
1993 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation - PLDI '93  
Unlike simple token substitution macros, such as are provided by CPP (the C preprocessor), syntax macros operate on Abstract Syntax Trees (A STS). Programmable  ...  Lisp has shown that a programmable syntax macro system acts as an adjunct to the compiler that gives the programmer important and powerful abstraction facilities not provided by the language.  ...  We feel that hygienic macro systems are very important, and are considering methods for making our system be hygienic and referentially transparent.  ... 
doi:10.1145/155090.155105 dblp:conf/pldi/WeiseC93 fatcat:o3wdvcsvnnelvld7izjkhw2ncm

Macrofication: Refactoring by Reverse Macro Expansion [chapter]

Christopher Schuster, Tim Disney, Cormac Flanagan
2016 Lecture Notes in Computer Science  
We have implemented a macrofication tool for a hygienic macro system in JavaScript, integrated it into a development environment and evaluated it by refactoring a popular open source JavaScript library  ...  Macro expansion is also a code transformation, but performed at compile time, that replaces instances of macro invocation patterns with the corresponding macro body or template.  ...  Problem 2: Hygiene The basic premise of a hygienic macro system is that macro expansion preserves alpha equivalence, which requires that the scope of variables bound in a macro is separate from the scope  ... 
doi:10.1007/978-3-662-49498-1_25 fatcat:5zsrzwwktvbldeh7kkizznmzoa
« Previous Showing results 1 — 15 out of 254 results