| Portability | non-portable (GHC Extensions) |
|---|---|
| Stability | experimental |
| Maintainer | Patrick Bahr <[email protected]> |
| Safe Haskell | Safe-Inferred |
Data.Comp.Ops
Description
This module provides operators on functors.
- data (f :+: g) e
- caseF :: (f a -> b) -> (g a -> b) -> (f :+: g) a -> b
- class sub :<: sup where
- data (f :*: g) a = (f a) :*: (g a)
- ffst :: (f :*: g) a -> f a
- fsnd :: (f :*: g) a -> g a
- data (f :&: a) e = (f e) :&: a
- class DistAnn s p s' | s' -> s, s' -> p where
- class RemA s s' | s -> s' where
- remA :: s a -> s' a
Documentation
Formal sum of signatures (functors).
Instances
| :<: f g => f :<: (:+: h g) | |
| f :<: (:+: f g) | |
| (Functor f, Functor g) => Functor (:+: f g) | |
| (Foldable f, Foldable g) => Foldable (:+: f g) | |
| (Traversable f, Traversable g) => Traversable (:+: f g) | |
| (ShowF f, ShowF g) => ShowF (:+: f g) | |
| (ArbitraryF f, ArbitraryF g) => ArbitraryF (:+: f g) | Instances of |
| (NFDataF f, NFDataF g) => NFDataF (:+: f g) | |
| (EqF f, EqF g) => EqF (:+: f g) |
|
| (OrdF f, OrdF g) => OrdF (:+: f g) |
|
| (HasVars f v0, HasVars g v0) => HasVars (:+: f g) v0 | |
| (Desugar f h, Desugar g h) => Desugar (:+: f g) h | |
| DistAnn s p s' => DistAnn (:+: f s) p (:+: (:&: f p) s') | |
| RemA s s' => RemA (:+: (:&: f p) s) (:+: f s') | |
| (Eq (f a), Eq (g a)) => Eq (:+: f g a) | |
| (Ord (f a), Ord (g a)) => Ord (:+: f g a) | |
| (Show (f a), Show (g a)) => Show (:+: f g a) |
caseF :: (f a -> b) -> (g a -> b) -> (f :+: g) a -> bSource
Utility function to case on a functor sum, without exposing the internal representation of sums.
Signature containment relation for automatic injections. The left-hand must
be an atomic signature, where as the right-hand side must have a list-like
structure. Examples include f :<: f :+: g and g :<: f :+: (g :+: h),
non-examples include f :+: g :<: f :+: (g :+: h) and
f :<: (f :+: g) :+: h.
This data type adds a constant product (annotation) to a signature.
Constructors
| (f e) :&: a |
Instances
| DistAnn f p (:&: f p) | |
| Functor f => Functor (:&: f a) | |
| Foldable f => Foldable (:&: f a) | |
| Traversable f => Traversable (:&: f a) | |
| (ShowF f, Show p) => ShowF (:&: f p) | |
| (ArbitraryF f, Arbitrary p) => ArbitraryF (:&: f p) | |
| RemA (:&: f p) f | |
| DistAnn s p s' => DistAnn (:+: f s) p (:+: (:&: f p) s') | |
| RemA s s' => RemA (:+: (:&: f p) s) (:+: f s') |