Safe Haskell | Safe-Inferred |
---|---|

Language | Haskell2010 |

This module extends Data.Either with extra operations, particularly
to quickly extract from inside an `Either`

. Some of these operations are
partial, and should be used with care in production-quality code.

## Synopsis

- module Data.Either
- fromLeft :: a -> Either a b -> a
- fromRight :: b -> Either a b -> b
- fromEither :: Either a a -> a
- fromLeft' :: Partial => Either l r -> l
- fromRight' :: Partial => Either l r -> r
- eitherToMaybe :: Either a b -> Maybe b
- maybeToEither :: a -> Maybe b -> Either a b
- mapLeft :: (a -> c) -> Either a b -> Either c b
- mapRight :: (b -> c) -> Either a b -> Either a c

# Documentation

module Data.Either

fromLeft :: a -> Either a b -> a #

Return the contents of a `Left`

-value or a default value otherwise.

#### Examples

Basic usage:

`>>>`

3`fromLeft 1 (Left 3)`

`>>>`

1`fromLeft 1 (Right "foo")`

*Since: base-4.10.0.0*

fromRight :: b -> Either a b -> b #

Return the contents of a `Right`

-value or a default value otherwise.

#### Examples

Basic usage:

`>>>`

3`fromRight 1 (Right 3)`

`>>>`

1`fromRight 1 (Left "foo")`

*Since: base-4.10.0.0*

fromEither :: Either a a -> a Source #

Pull the value out of an `Either`

where both alternatives
have the same type.

\x -> fromEither (Left x ) == x \x -> fromEither (Right x) == x

fromRight' :: Partial => Either l r -> r Source #

The `fromRight'`

function extracts the element out of a `Right`

and
throws an error if its argument is `Left`

.
Much like `fromJust`

, using this function in polished code is usually a bad idea.

\x -> fromRight' (Right x) == x \x -> fromRight' (Left x) == undefined

eitherToMaybe :: Either a b -> Maybe b Source #

maybeToEither :: a -> Maybe b -> Either a b Source #