Data.Strict.Either

strict-0.3.2: Strict data types and String IO.

Copyright | (c) 2006-2007 Roman Leshchinskiy
License | BSD-style (see the file LICENSE)
Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au>
Stability | experimental
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Data.Strict.Either

Description

Strict `Either`.

Same as the standard Haskell `Either`, but `Left _|_ = Right _|_ = _|_`

Synopsis

- data Either a b
  - = Left !a
  - | Right !b
- either :: (a -> c) -> (b -> c) -> Either a b -> c
- isLeft :: Either a b -> Bool
- isRight :: Either a b -> Bool
- fromLeft :: Either a b -> a
- fromRight :: Either a b -> b

# Documentation

data Either a b #

The strict choice type.

Constructors

Left !a |
Right !b |

Instances

Functor (Either a) # |
Methods fmap :: (a -> b) -> Either a a -> Either a b # (<$) :: a -> Either a b -> Either a a #
(Eq a, Eq b) => Eq (Either a b) # |
Methods (==) :: Either a b -> Either a b -> Bool # (/=) :: Either a b -> Either a b -> Bool #
(Ord a, Ord b) => Ord (Either a b) # |
Methods compare :: Either a b -> Either a b -> Ordering # (<) :: Either a b -> Either a b -> Bool # (<=) :: Either a b -> Either a b -> Bool # (>) :: Either a b -> Either a b -> Bool # (>=) :: Either a b -> Either a b -> Bool # max :: Either a b -> Either a b -> Either a b # min :: Either a b -> Either a b -> Either a b #
(Read a, Read b) => Read (Either a b) # |
Methods readsPrec :: Int -> ReadS (Either a b) # readList :: ReadS [Either a b] # readPrec :: ReadPrec (Either a b) # readListPrec :: ReadPrec [Either a b] #
(Show a, Show b) => Show (Either a b) # |
Methods showsPrec :: Int -> Either a b -> ShowS # show :: Either a b -> String # showList :: [Either a b] -> ShowS #

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`.

isLeft :: Either a b -> Bool #

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

isRight :: Either a b -> Bool #

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

fromLeft :: Either a b -> a #

Extracts the element out of a `Left` and throws an error if the argument is a `Right`.

fromRight :: Either a b -> b #

Extracts the element out of a `Right` and throws an error if the argument is a `Left`.