Portability | non-portable (GHC Extensions) |
---|---|
Stability | experimental |
Maintainer | Patrick Bahr <paba@diku.dk> |
This module provides operators on higher-order functors. All definitions are generalised versions of those in Data.Comp.Ops.
Documentation
Data type defining coproducts.
f :<<: g => f :<<: (:++: h g) | |
f :<<: (:++: f g) | |
(HFunctor f, HFunctor g) => HFunctor (:++: f g) | |
(HExpFunctor f, HExpFunctor g) => HExpFunctor (:++: f g) | |
(HFoldable f, HFoldable g) => HFoldable (:++: f g) | |
(HTraversable f, HTraversable g) => HTraversable (:++: f g) | |
(HEqF f, HEqF g) => HEqF (:++: f g) |
|
(HShowF f, HShowF g) => HShowF (:++: f g) | |
(HasVars f v, HasVars g v) => HasVars (:++: f g) v | |
HDistProd s p s' => HDistProd (:++: f s) p (:++: (:&&: f p) s') | |
HRemoveP s s' => HRemoveP (:++: (:&&: f p) s) (:++: f s') |
This data type adds a constant product to a signature. Alternatively, this could have also been defined as
data (f :&&: a) (g :: * -> *) e = f g e :&&: a e
This is too general, however, for example for productHTermHom
.
(f g e) :&&: a |
HDistProd f p (:&&: f p) | |
HFunctor f => HFunctor (:&&: f a) | |
HFoldable f => HFoldable (:&&: f a) | |
HTraversable f => HTraversable (:&&: f a) | |
(HShowF f, Show p) => HShowF (:&&: f p) | |
HRemoveP (:&&: f p) f | |
HDistProd s p s' => HDistProd (:++: f s) p (:++: (:&&: f p) s') | |
HRemoveP s s' => HRemoveP (:++: (:&&: f p) s) (:++: f s') |