| Copyright | Copyright (C) 2015 Kyle Carter |
|---|---|
| License | BSD3 |
| Maintainer | Kyle Carter <kylcarte@indiana.edu> |
| Stability | experimental |
| Portability | RankNTypes |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Type.Disjunction
Description
Two type combinators for working with disjunctions: A branch combinator '(:|:)', and a choice combinator '(:+:)'.
These are analogous to '(|||)' and '(+++)' from Arrow,
respectively.
Documentation
data f :|: g :: k -> * where infixr 4 Source #
Instances
| Bifunctor1 m m m ((:|:) m) Source # | |
| Traversable1 l l ((:|:) l f) Source # | |
| Foldable1 l l ((:|:) l f) Source # | |
| Functor1 l l ((:|:) l f) Source # | |
| (Witness p q (f a), Witness p q (g a)) => Witness p q ((:|:) k f g a) Source # | |
| (Read1 k f, Read1 k g) => Read1 k ((:|:) k f g) Source # | |
| (Show1 k f, Show1 k g) => Show1 k ((:|:) k f g) Source # | |
| (Ord1 k f, Ord1 k g) => Ord1 k ((:|:) k f g) Source # | |
| (Eq1 k f, Eq1 k g) => Eq1 k ((:|:) k f g) Source # | |
| (Eq (f a), Eq (g a)) => Eq ((:|:) k f g a) Source # | |
| (Ord (f a), Ord (g a)) => Ord ((:|:) k f g a) Source # | |
| (Read (f a), Read (g a)) => Read ((:|:) k f g a) Source # | |
| (Show (f a), Show (g a)) => Show ((:|:) k f g a) Source # | |
| type WitnessC p q ((:|:) k f g a) Source # | |
data f :+: g :: Either k l -> * where infixr 4 Source #
Instances
| Witness p q (g b1) => Witness p q ((:+:) b k f g (Right k b b1)) Source # | |
| Witness p q (f a1) => Witness p q ((:+:) l a f g (Left a l a1)) Source # | |
| Bifunctor1 (Either k l) l k ((:+:) l k) Source # | |
| Traversable1 (Either k1 k) k ((:+:) k k1 f) Source # | |
| Foldable1 (Either k1 k) k ((:+:) k k1 f) Source # | |
| Functor1 (Either k1 k) k ((:+:) k k1 f) Source # | |
| (Read1 k f, Read1 l g) => Read1 (Either k l) ((:+:) l k f g) Source # | |
| (Show1 k f, Show1 l g) => Show1 (Either k l) ((:+:) l k f g) Source # | |
| (Ord1 k f, Ord1 l g) => Ord1 (Either k l) ((:+:) l k f g) Source # | |
| (Eq1 k f, Eq1 l g) => Eq1 (Either k l) ((:+:) l k f g) Source # | |
| Known b g b1 => Known (Either k b) ((:+:) b k f g) (Right k b b1) Source # | |
| Known a f a1 => Known (Either a l) ((:+:) l a f g) (Left a l a1) Source # | |
| (Eq (f (FromLeft k l e)), Eq (g (FromRight k l e))) => Eq ((:+:) l k f g e) Source # | |
| (Ord (f (FromLeft k l e)), Ord (g (FromRight k l e))) => Ord ((:+:) l k f g e) Source # | |
| (Show (f (FromLeft k l e)), Show (g (FromRight k l e))) => Show ((:+:) l k f g e) Source # | |
| type WitnessC p q ((:+:) b k f g (Right k b b1)) Source # | |
| type WitnessC p q ((:+:) l a f g (Left a l a1)) Source # | |
| type KnownC (Either k b) ((:+:) b k f g) (Right k b b1) Source # | |
| type KnownC (Either a l) ((:+:) l a f g) (Left a l a1) Source # | |