X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FEither.hs;h=6af488fc9fb8a0189efe009cb5f7c12a9e24f140;hb=632f3da3ff5702d42b00521d620dc61b8f6ea048;hp=dbed24bfb8f873e4c16f39917b3d9fc0b8a346c9;hpb=3b8746d947788e5286f5b3dd1fb0929af109fe64;p=ghc-base.git diff --git a/Data/Either.hs b/Data/Either.hs index dbed24b..6af488f 100644 --- a/Data/Either.hs +++ b/Data/Either.hs @@ -21,12 +21,17 @@ module Data.Either ( partitionEithers, -- :: [Either a b] -> ([a],[b]) ) where -import Data.Tuple () +#include "Typeable.h" #ifdef __GLASGOW_HASKELL__ import GHC.Base import GHC.Show +import GHC.Read +#endif +import Data.Typeable + +#ifdef __GLASGOW_HASKELL__ {- -- just for testing import Test.QuickCheck @@ -42,7 +47,7 @@ either correct or an error; by convention, the 'Left' constructor is used to hold an error value and the 'Right' constructor is used to hold a correct value (mnemonic: \"right\" also means \"correct\"). -} -data Either a b = Left a | Right b deriving (Eq, Ord, Show) +data Either a b = Left a | Right b deriving (Eq, Ord, Read, Show) -- | Case analysis for the 'Either' type. -- If the value is @'Left' a@, apply the first function to @a@; @@ -52,6 +57,8 @@ either f _ (Left x) = f x either _ g (Right y) = g y #endif /* __GLASGOW_HASKELL__ */ +INSTANCE_TYPEABLE2(Either,eitherTc,"Either") + -- | Extracts from a list of 'Either' all the 'Left' elements -- All the 'Left' elements are extracted in order.