base-4.3.1.0: Basic libraries

Portability | portable
Stability | experimental
Maintainer | libraries@haskell.org

Data.Either

Description

The Either type, and associated operations.

Synopsis

- data Either a b
  - = Left a
  - | Right b
- either :: (a -> c) -> (b -> c) -> Either a b -> c
- lefts :: [Either a b] -> [a]
- rights :: [Either a b] -> [b]
- partitionEithers :: [Either a b] -> ([a], [b])

# Documentation

data Either a b

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").

Constructors

Left a |
Right b |

Instances

Typeable2 Either |
Monad (Either e) |
Functor (Either a) |
MonadFix (Either e) |
Applicative (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) |

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

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

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

Extracts from a list of `Either` all the `Left` elements All the `Left` elements are extracted in order.

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

Extracts from a list of `Either` all the `Right` elements All the `Right` elements are extracted in order.

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

Partitions a list of `Either` into two lists All the `Left` elements are extracted, in order, to the first component of the output. Similarly the `Right` elements are extracted to the second component of the output.