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.