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 Source #

The strict choice type.

Constructors

Left !a |
Right !b |

#### Instances

Instances details

Functor (Either a) Source # |
Instance details Defined in Data.Strict.Either Methods fmap :: (a0 -> b) -> Either a a0 -> Either a b (<$) :: a0 -> Either a b -> Either a a0
(Eq a, Eq b) => Eq (Either a b) Source # |
Instance details Defined in Data.Strict.Either Methods (==) :: Either a b -> Either a b -> Bool (/=) :: Either a b -> Either a b -> Bool
(Ord a, Ord b) => Ord (Either a b) Source # |
Instance details Defined in Data.Strict.Either 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) Source # |
Instance details Defined in Data.Strict.Either 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) Source # |
Instance details Defined in Data.Strict.Either 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 Source #

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 Source #

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

isRight :: Either a b -> Bool Source #

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

fromLeft :: Either a b -> a Source #

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

fromRight :: Either a b -> b Source #

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