From 8abb469bd2210d78da74b334a0f4397be5ac37f6 Mon Sep 17 00:00:00 2001 From: Ross Paterson Date: Thu, 17 Jun 2010 22:51:10 +0000 Subject: [PATCH] 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. --- Control/Applicative.hs | 5 +++++ 1 file changed, 5 insertions(+) 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 } -- 1.7.10.4