X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FEither.hs;h=65b366123d04ff09e8ccca7d53cea7f0389141ba;hb=a87bf77d4a5dfaae56867a96749f204aee0192de;hp=f3cd10665590c3bac229e32e91231d52c4f46b3c;hpb=7f1f4e7a695c402ddd3a1dc2cc7114e649a78ebc;p=ghc-base.git diff --git a/Data/Either.hs b/Data/Either.hs index f3cd106..65b3661 100644 --- a/Data/Either.hs +++ b/Data/Either.hs @@ -1,15 +1,13 @@ {-# OPTIONS -fno-implicit-prelude #-} ----------------------------------------------------------------------------- --- +-- | -- Module : Data.Either -- Copyright : (c) The University of Glasgow 2001 --- License : BSD-style (see the file libraries/core/LICENSE) +-- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : experimental --- Portability : non-portable --- --- $Id: Either.hs,v 1.1 2001/06/28 14:15:02 simonmar Exp $ +-- Portability : portable -- -- The Either type, and associated operations. -- @@ -21,5 +19,26 @@ module Data.Either ( ) where #ifdef __GLASGOW_HASKELL__ -import GHC.Maybe +import GHC.Base #endif + +#ifndef __HUGS__ +{-| + +The 'Either' type represents values with two possibilities: a value of +type @'Either' a b@ is either @'Left' a@ or @'Right' b@. + +The 'Either' type is sometimes used to represent a value which is +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 ) + +-- | Case analysis for the 'Either' type. +-- If the value is @'Left' a@, apply the first function to @a@; +-- if it is @'Right' b@, apply the second function to @b@. +either :: (a -> c) -> (b -> c) -> Either a b -> c +either f _ (Left x) = f x +either _ g (Right y) = g y +#endif /* __HUGS__ */