Implementing a scheme in haskell