strict-base-types-0.3.0: Strict variants of the types provided in base.

MaintainerSimon Meier <>
Safe HaskellNone



The strict variant of the standard Haskell Either type and the corresponding variants of the functions from Data.Either.

Note that the strict Either type is not an applicative functor, and therefore also no monad. The reasons are the same as the ones for the strict Maybe type, which are explained in Data.Maybe.Strict.



data Either a b

The strict choice type.


Left !a 
Right !b 


Typeable2 Either 
Bitraversable Either 
Bifunctor Either 
Bifoldable Either 
Swapped Either 
Functor (Either a) 
Foldable (Either e) 
Traversable (Either e) 
(Eq a, Eq b) => Eq (Either a b) 
(Data a, Data b) => Data (Either a b) 
(Ord a, Ord b) => Ord (Either a b) 
(Read a, Read b) => Read (Either a b) 
(Show a, Show b) => Show (Either a b) 
Generic (Either a b) 
(Arbitrary a, Arbitrary b) => Arbitrary (Either a b) 
(ToJSON a, ToJSON b) => ToJSON (Either a b) 
(FromJSON a, FromJSON b) => FromJSON (Either a b) 
(Binary a, Binary b) => Binary (Either a b) 
(NFData a, NFData b) => NFData (Either a b) 
Strict (Either a b) (Either a b) 

isRight :: Either a b -> Bool

Yields True iff the argument is of the form Right _.

isLeft :: Either a b -> Bool

Yields True iff the argument is of the form Left _.

either :: (a -> c) -> (b -> c) -> Either a b -> c

Case analysis: if the value is Left a, apply the first function to a; if it is Right b, apply the second function to b.

lefts :: [Either a b] -> [a]Source

Analogous to lefts in Data.Either.

rights :: [Either a b] -> [b]Source

Analogous to rights in Data.Either.

partitionEithers :: [Either a b] -> ([a], [b])Source

Analogous to partitionEithers in Data.Either.

_Left :: Prism (Either a c) (Either b c) a bSource

Analogous to _Left in Control.Lens.Prism.

_Right :: Prism (Either c a) (Either c b) a bSource

Analogous to _Right in Control.Lens.Prism.