Copyright | Copyright (C) 2015 Kyle Carter |
---|---|
License | BSD3 |
Maintainer | Kyle Carter <kylcarte@indiana.edu> |
Stability | experimental |
Portability | RankNTypes |
Safe Haskell | None |
Language | Haskell2010 |
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
Bifunctor1 k k k ((:|:) k) Source | |
Traversable1 k k ((:|:) k f) Source | |
Foldable1 k k ((:|:) k f) Source | |
Functor1 k k ((:|:) k 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) = (Witness p q (f a), Witness p q (g a)) Source |
data f :+: g :: Either k l -> * where infixr 4 Source
Bifunctor1 k k (Either k k) ((:+:) k k) Source | |
Witness p q (g b) => Witness p q ((:+:) k k f g (Right k k b)) Source | |
Witness p q (f a) => Witness p q ((:+:) k k f g (Left k k a)) Source | |
Traversable1 k (Either k k) ((:+:) k k f) Source | |
Foldable1 k (Either k k) ((:+:) k k f) Source | |
Functor1 k (Either k k) ((:+:) k k f) Source | |
(Read1 k f, Read1 k1 g) => Read1 (Either k k) ((:+:) k k f g) Source | |
(Show1 k f, Show1 k1 g) => Show1 (Either k k) ((:+:) k k f g) Source | |
(Ord1 k f, Ord1 k1 g) => Ord1 (Either k k) ((:+:) k k f g) Source | |
(Eq1 k f, Eq1 k1 g) => Eq1 (Either k k) ((:+:) k k f g) Source | |
Known k1 g b => Known (Either k k) ((:+:) k k f g) (Right k k b) Source | |
Known k1 f a => Known (Either k k) ((:+:) k k f g) (Left k k a) Source | |
(Eq (f (FromLeft k k1 e)), Eq (g (FromRight k1 k e))) => Eq ((:+:) k k f g e) Source | |
(Ord (f (FromLeft k k1 e)), Ord (g (FromRight k1 k e))) => Ord ((:+:) k k f g e) Source | |
(Show (f (FromLeft k k1 e)), Show (g (FromRight k1 k e))) => Show ((:+:) k k f g e) Source | |
type WitnessC p q ((:+:) k k1 f g (Right k k1 b)) = Witness p q (g b) Source | |
type WitnessC p q ((:+:) k1 k f g (Left k1 k a)) = Witness p q (f a) Source | |
type KnownC (Either k k1) ((:+:) k k1 f g) (Right k k1 b) = Known k1 g b Source | |
type KnownC (Either k1 k) ((:+:) k1 k f g) (Left k1 k a) = Known k1 f a Source |