haskell Haskell 98 either monad transformer ekmett/either