Macro-by-example: Deriving syntactic transformations from their specifications
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
Correspondence between ALGOL 60 and Church's Lambda-notation: part I
Communications of the ACM
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
The Design of a Pretty-printing Library
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Relating models of backtracking
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
The anatomy of a loop: a story of scope and control
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Revised6 report on the algorithmic language scheme
Journal of Functional Programming
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Multilingual component programming in racket
Proceedings of the 10th ACM international conference on Generative programming and component engineering
Streams that compose using macros that oblige
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Honu: syntactic extension for algebraic notation through enforestation
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Hi-index | 0.00 |
Existing macro systems force programmers to make a choice between clarity of specification and robustness. If they choose clarity, they must forgo validating significant parts of the specification and thus produce low-quality language extensions. If they choose robustness, they must write in a style that mingles the implementation with the specification and therefore obscures the latter. This paper introduces a new language for writing macros. With the new macro system, programmers naturally write robust language extensions using easy-to-understand specifications. The system translates these specifications into validators that detect misuses - including violations of context-sensitive constraints - and automatically synthesize appropriate feedback, eliminating the need for ad hoc validation code.