Portability | Rank2Types, TFs |
---|---|
Stability | provisional |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Safe Haskell | Trustworthy |
- newtype Ran p q a b = Ran {
- runRan :: forall x. p x a -> q x b
- decomposeRan :: Procompose (Ran q p) q :-> p
- precomposeRan :: Profunctor q => Procompose q (Ran p (->)) :-> Ran p q
- curryRan :: (Procompose p q :-> r) -> p :-> Ran q r
- uncurryRan :: (p :-> Ran q r) -> Procompose p q :-> r
Documentation
This represents the right Kan extension of a Profunctor
q
along a Profunctor
p
in a limited version of the 2-category of Profunctors where the only object is the category Hask, 1-morphisms are profunctors composed and compose with Profunctor composition, and 2-morphisms are just natural transformations.
Category p => ProfunctorComonad (Ran p) | |
ProfunctorFunctor (Ran p) | |
~ (* -> * -> *) p q => Category (Ran p q) |
|
(Profunctor p, Profunctor q) => Profunctor (Ran p q) | |
Profunctor q => Functor (Ran p q a) |
decomposeRan :: Procompose (Ran q p) q :-> pSource
The 2-morphism that defines a right Kan extension.
Note: When q
is left adjoint to
then Ran
q (->)decomposeRan
is the counit
of the adjunction.
precomposeRan :: Profunctor q => Procompose q (Ran p (->)) :-> Ran p qSource
uncurryRan :: (p :-> Ran q r) -> Procompose p q :-> rSource