intro to haskell's implementation