The proposal is to add this instance to Control.Applicative: instance Applicative (Either e) where pure = Right Left e <*> _ = Left e Right f <*> r = fmap f r This is not the only possible instance for Either, but this one is compatible with the usual Monad instance. Deadline: 15th June 2010