[Haskell-cafe] Either as a Monad instance
Ross Paterson
ross at soi.city.ac.uk
Tue Oct 3 03:49:34 EDT 2006
On Tue, Oct 03, 2006 at 10:44:49AM +1000, Thomas Conway wrote:
> I've been [trying to] grapple with the various monads and
> transformers, and it occurs to me that the standard instance for
> Either as a monadic type is unnecessarily restrictive. Is there a
> compelling reason that it is not just
>
> instance Monad (Either e) where
> return = Right
> (Left e) >>= f = Left e
> (Right x) >>= f = f x
>
> abort = Left
That is the definition one would expect, but the restriction was added
so that the instance could include a definition of fail. It's evidence
that including fail in Monad is a wart, IMO. Using strings to represent
errors has severe limitations.
More information about the Haskell-Cafe
mailing list