a small scheme interpreter written by Haskell