[Haskell-cafe] Monadic function fails as Nothing in Maybe context but as Exception in Either context.
mike at barrucadu.co.uk
Mon Nov 30 22:36:22 UTC 2015
On Mon, 30 Nov 2015 14:25:49 -0800
Jeffrey Brown <jeffbrown.the at gmail.com> wrote:
> I've written a monadic function which in a Maybe context produces a
> Nothing when it fails (as intended), but in an Either context
> produces an Exception rather than a Left.
The Monad instance for (Either e) uses the default definition of 'fail',
which is to throw an exception:
instance Monad (Either e) where
return = Right
Left l >>= _ = Left l
Right r >>= k = k r
In general, 'Left' can't be used because that would only type check
for (Either String), but the Monad instance is more general than that.
Michael Walker (http://www.barrucadu.co.uk)
More information about the Haskell-Cafe