From: Ross Paterson Date: Thu, 17 Jun 2010 22:51:10 +0000 (+0000) Subject: add Applicative instance for Either (proposal #4095) X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=8abb469bd2210d78da74b334a0f4397be5ac37f6;p=ghc-base.git add Applicative instance for Either (proposal #4095) This is not the only possible instance for Either, but this one is compatible with the usual Monad instance. --- diff --git a/Control/Applicative.hs b/Control/Applicative.hs index a2755eb..154b591 100644 --- a/Control/Applicative.hs +++ b/Control/Applicative.hs @@ -167,6 +167,11 @@ instance Monoid a => Applicative ((,) a) where pure x = (mempty, x) (u, f) <*> (v, x) = (u `mappend` v, f x) +instance Applicative (Either e) where + pure = Right + Left e <*> _ = Left e + Right f <*> r = fmap f r + -- new instances newtype Const a b = Const { getConst :: a }