Automata via Macros

Shriram Krishnamurthi

Journal of Functional Programming, 2006

Abstract

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.

Comment

This is an extended exposition of the example I presented in my talk, The Swine Before Perl , at Lightweight Languages 1. The talk is available on-line.

Paper

PDF

