Producing good code for the case statement
Software—Practice & Experience
Syntactic extensions in the programming language LISP
Syntactic extensions in the programming language LISP
Structure and interpretation of computer programs
Structure and interpretation of computer programs
Journal of Logic Programming
Macro-by-example: Deriving syntactic transformations from their specifications
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Compiling with continuations
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
Proper tail recursion and space efficiency
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Revised5 report on the algorithmic language scheme
ACM SIGPLAN Notices
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
The Scheme Programming Language: ANSI Scheme
The Scheme Programming Language: ANSI Scheme
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Proceedings of ACM conference on Proving assertions about programs
ACM '77 Proceedings of the 1977 annual conference
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Linguistic reuse
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Journal of Functional Programming
ACM SIGPLAN Notices
“little language” project modules
Journal of Functional Programming
SugarJ: library-based syntactic language extensibility
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Lisp programmers have long used macros to extend their language. Indeed, their success has inspired macro notations for a variety of other languages, such as C and Java. There is, however, a paucity of effective pedagogic examples of macro use. This paper presents a short, non-trivial example that implements a construct not already found in mainstream languages. Furthermore, it motivates the need for tail-calls, as opposed to mere tail-recursion, and illustrates how support for tail-call optimization is crucial to support a natural style of macro-based language extension.