a scheme in haskell