Copyright  (C) 20132014 Edward Kmett and Dan Doel 

License  BSDstyle (see the file LICENSE) 
Maintainer  Edward Kmett <ekmett@gmail.com> 
Stability  provisional 
Portability  Rank2Types, TFs 
Safe Haskell  Trustworthy 
Language  Haskell2010 
 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 2category of Profunctors where the only object is the category Hask, 1morphisms are profunctors composed and compose with Profunctor composition, and 2morphisms are just natural transformations.
(~) (* > * > *) p q => Category * (Ran p q) 

Category * p => ProfunctorComonad (Ran p)  
ProfunctorFunctor (Ran p)  
(Profunctor p, Profunctor q) => Profunctor (Ran p q)  
Profunctor q => Functor (Ran p q a) 
decomposeRan :: Procompose (Ran q p) q :> p Source
The 2morphism 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 q Source
uncurryRan :: (p :> Ran q r) > Procompose p q :> r Source