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.
Proposal: add:
instance Monoid e => Alternative (Either e) whereempty = Left memptyLeft 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@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries