X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FEither.hs;h=6ffc607303751d47d3c24def28d2dec88886e065;hb=HEAD;hp=6af488fc9fb8a0189efe009cb5f7c12a9e24f140;hpb=0a7a4a16e555a77afec5501a75d9fbbb9fc35730;p=ghc-base.git diff --git a/Data/Either.hs b/Data/Either.hs index 6af488f..6ffc607 100644 --- a/Data/Either.hs +++ b/Data/Either.hs @@ -1,4 +1,8 @@ -{-# OPTIONS_GHC -XNoImplicitPrelude #-} +{-# LANGUAGE CPP, NoImplicitPrelude #-} +#ifdef __GLASGOW_HASKELL__ +{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, StandaloneDeriving #-} +#endif + ----------------------------------------------------------------------------- -- | -- Module : Data.Either @@ -30,6 +34,7 @@ import GHC.Read #endif import Data.Typeable +import GHC.Generics (Generic) #ifdef __GLASGOW_HASKELL__ {- @@ -47,7 +52,8 @@ 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, Read, Show) +data Either a b = Left a | Right b + deriving (Eq, Ord, Read, Show, Generic) -- | Case analysis for the 'Either' type. -- If the value is @'Left' a@, apply the first function to @a@; @@ -79,8 +85,8 @@ rights x = [a | Right a <- x] partitionEithers :: [Either a b] -> ([a],[b]) partitionEithers = foldr (either left right) ([],[]) where - left a (l, r) = (a:l, r) - right a (l, r) = (l, a:r) + left a ~(l, r) = (a:l, r) + right a ~(l, r) = (l, a:r) {- {--------------------------------------------------------------------