# Module DA.Either¶

The Either type represents values with two possibilities.

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

## Functions¶

lefts

: [Either a b] -> [a]

Extracts all the Left elements from a list.

rights

: [Either a b] -> [b]

Extracts all the Right elements from a list.

partitionEithers

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

Partitions a list of Either into two lists, the Left and Right elements respectively. Order is maintained.

isLeft

: Either a b -> Bool

Return True if the given value is a Left-value, False otherwise.

isRight

: Either a b -> Bool

Return True if the given value is a Right-value, False otherwise.

fromLeft

: a -> Either a b -> a

Return the contents of a Left-value, or a default value in case of a Right-value.

fromRight

: b -> Either a b -> b

Return the contents of a Right-value, or a default value in case of a Left-value.

optionalToEither

: a -> Optional b -> Either a b

Convert a Optional value to an Either value, using the supplied parameter as the Left value if the Optional is None.

eitherToOptional

: Either a b -> Optional b

Convert an Either value to a Optional, dropping any value in Left.

maybeToEither
: a -> Optional b -> Either a b
eitherToMaybe
: Either a b -> Optional b