a simple functional programming language implemented in Haskell without using GHC language extensions