[Haskell] Using MonadError within other Monads