I'm interested in looking at some examples of language implementation on Common Lisp. Even toy languages would be fine (perhaps preferable). Mainly, I'm curious about the different strategies and patterns people employ to do this. I would guess that there are tons of DSLs on Lisp but a preliminary Google search didn't turn up much. Anyone know of some good references on this topic?

I'm interested in looking at some examples of language implementation on Common Lisp. Even toy languages would be fine (perhaps preferable). Mainly, I'm curious about the different strategies and patterns people employ to do this. I would guess that there are tons of DSLs on Lisp but a preliminary Google search didn't turn up much. Anyone know of some good references on this topic?

Thanks,Trystan

JazzScheme http://www.jazzscheme.org/ is a Scheme derived language whose kernel was implemented fully in C. During the last 2 years, we made the crazy bet of converting the kernel to 100% pure Scheme code using macros.

After an initial drop in performance of being about 95x slower, performance is now 2x faster than the old C-based kernel. Macros enabled us to access the underlying Scheme functionality with no performance penalty. An important part of the performance is also due to the excellent Scheme implementation that we are using. Gambit http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page, on top of being extremely fast, gives complete access to every low-level untyped facilities needed to implement something as performance demanding as a language.

And in term of code, the kernel implementation that was about 150K lines of C code is now done and a lot more in just 15K lines of much clearer and easy to evolve lines of Scheme code.