Copyright  (C) 20142015 Edward Kmett 

License  BSDstyle (see the file LICENSE) 
Maintainer  Edward Kmett <ekmett@gmail.com> 
Stability  experimental 
Portability  portable 
Safe Haskell  Safe 
Language  Haskell2010 
 class Profunctor p => Closed p where
 newtype Closure p a b = Closure {
 runClosure :: forall x. p (x > a) (x > b)
 close :: Closed p => (p :> q) > p :> Closure q
 unclose :: Profunctor q => (p :> Closure q) > p :> q
 data Environment p a b where
 Environment :: ((z > y) > b) > p x y > (a > z > x) > Environment p a b
 curry' :: Closed p => p (a, b) c > p a (b > c)
Documentation
class Profunctor p => Closed p where Source #
A strong profunctor allows the monoidal structure to pass through.
A closed profunctor allows the closed structure to pass through.
Closed (>) Source #  
(Distributive f, Monad f) => Closed (Kleisli f) Source #  
Functor f => Closed (Cokleisli f) Source #  
Closed (Tagged *) Source #  
Functor f => Closed (Costar f) Source #  
Distributive f => Closed (Star f) Source #  
Closed (Environment p) Source #  
Profunctor p => Closed (Closure p) Source #  
Closed (FreeMapping p) Source #  
Profunctor p => Closed (CofreeMapping p) Source #  
Closed p => Closed (Coyoneda p) Source #  
Closed p => Closed (Yoneda p) Source #  
(Closed p, Closed q) => Closed (Procompose p q) Source #  
(Closed p, Closed q) => Closed (Product * * p q) Source #  
(Functor f, Closed p) => Closed (Tannen * * * f p) Source #  
newtype Closure p a b Source #
Closure
adjoins a Closed
structure to any Profunctor
.
Closure  

ProfunctorComonad Closure Source #  
ProfunctorFunctor Closure Source #  
ProfunctorAdjunction Environment Closure Source #  
Arrow p => Arrow (Closure p) Source #  
ArrowZero p => ArrowZero (Closure p) Source #  
ArrowPlus p => ArrowPlus (Closure p) Source #  
ArrowLoop p => ArrowLoop (Closure p) Source #  
Profunctor p => Profunctor (Closure p) Source #  
Strong p => Strong (Closure p) Source #  
Profunctor p => Closed (Closure p) Source #  
Category * p => Category * (Closure p) Source #  
Profunctor p => Functor (Closure p a) Source #  
(Profunctor p, Arrow p) => Applicative (Closure p a) Source #  
(Profunctor p, ArrowPlus p) => Alternative (Closure p a) Source #  
(Profunctor p, Arrow p, Monoid b) => Monoid (Closure p a b) Source #  
data Environment p a b where Source #
Environment :: ((z > y) > b) > p x y > (a > z > x) > Environment p a b 