How to make a small DSL in Common Lisp
inconvergent.net