Walkthrough: writing a Lisp interpreter in Haskell (2006)
defmacro.org