Alternative instance for Either

Tony Morris tonymorris at gmail.com
Thu Jun 14 10:42:06 UTC 2018


Alternatively :) or more like, something to think about, an Alt instance
for Either.

class Alt f where
  (<!>) :: f a -> f a -> f a

instance Alt Either where
  Right b <!> _ = Right b
  Left a <!> x = x

https://hackage.haskell.org/package/semigroupoids/docs/Data-Functor-Alt.html

There is something iffy about Monoid e => Alternative (Either e) but I
can't put my finger on it.


On 06/14/2018 08:37 PM, Nathan van Doorn wrote:
> Proposal: add:
>
> instance Monoid e => Alternative (Either e) where
>   empty = Left mempty
>   Left a <|> Left b = Left (a `mappend` b)
>   Right a <|> _ = Right a
>   _ <|> Right b = Right b
>
> instance Monoid e => MonadPlus (Either e) where
>   ...
>
> to base.
>
> This is a reasonably obvious instance which I am pretty sure is law
> abiding.
>
> It'd be useful for defining a series of computations which may fail,
> where we only care about one success.
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20180614/13dda0ff/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20180614/13dda0ff/attachment.sig>


More information about the Libraries mailing list