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-Inferred
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) |
(Eq a, Eq b) => Eq (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) |

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