A lisp implementation in Haskell