| Copyright | (C) 2013-2015 Edward Kmett and Dan Doel | 
|---|---|
| License | BSD-style (see the file LICENSE) | 
| Maintainer | Edward Kmett <ekmett@gmail.com> | 
| Stability | provisional | 
| Portability | Rank2Types, TFs | 
| Safe Haskell | Safe | 
| Language | Haskell2010 | 
Data.Profunctor.Ran
Description
Synopsis
- 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
- newtype Codensity p a b = Codensity {- runCodensity :: forall x. p x a -> p x b
 
- decomposeCodensity :: Procompose (Codensity p) p a b -> p a b
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.
Ran has a polymorphic kind since 5.6.
Instances
| ProfunctorFunctor (Ran p :: (Type -> Type -> Type) -> k -> Type -> Type) Source # | |
| p ~ q => Category (Ran p q :: k2 -> k2 -> Type) Source # | 
 | 
| Category p => ProfunctorComonad (Ran p :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # | |
| Defined in Data.Profunctor.Ran Methods proextract :: forall (p0 :: Type -> Type -> Type). Profunctor p0 => Ran p p0 :-> p0 Source # produplicate :: forall (p0 :: Type -> Type -> Type). Profunctor p0 => Ran p p0 :-> Ran p (Ran p p0) Source # | |
| (Profunctor p, Profunctor q) => Profunctor (Ran p q) Source # | |
| Defined in Data.Profunctor.Ran Methods dimap :: (a -> b) -> (c -> d) -> Ran p q b c -> Ran p q a d Source # lmap :: (a -> b) -> Ran p q b c -> Ran p q a c Source # rmap :: (b -> c) -> Ran p q a b -> Ran p q a c Source # (#.) :: forall a b c q0. Coercible c b => q0 b c -> Ran p q a b -> Ran p q a c Source # (.#) :: forall a b c q0. Coercible b a => Ran p q b c -> q0 a b -> Ran p q a c Source # | |
| Profunctor q => Functor (Ran p q a) Source # | |
decomposeRan :: Procompose (Ran q p) q :-> p Source #
The 2-morphism that defines a right Kan extension.
Note: When q is left adjoint to 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 #
newtype Codensity p a b Source #
This represents the right Kan extension of a Profunctor p along
 itself. This provides a generalization of the "difference list" trick to
 profunctors.
Codensity has a polymorphic kind since 5.6.
Constructors
| Codensity | |
| Fields 
 | |
Instances
| Category (Codensity p :: k2 -> k2 -> Type) Source # | |
| Profunctor p => Profunctor (Codensity p) Source # | |
| Defined in Data.Profunctor.Ran Methods dimap :: (a -> b) -> (c -> d) -> Codensity p b c -> Codensity p a d Source # lmap :: (a -> b) -> Codensity p b c -> Codensity p a c Source # rmap :: (b -> c) -> Codensity p a b -> Codensity p a c Source # (#.) :: forall a b c q. Coercible c b => q b c -> Codensity p a b -> Codensity p a c Source # (.#) :: forall a b c q. Coercible b a => Codensity p b c -> q a b -> Codensity p a c Source # | |
| Profunctor p => Functor (Codensity p a) Source # | |
decomposeCodensity :: Procompose (Codensity p) p a b -> p a b Source #