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 |
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 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 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
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 #
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
.
Codensity | |
|
Instances
Category ( Codensity p :: k2 -> k2 -> Type ) Source # | |
Profunctor p => Profunctor ( Codensity p) Source # | |
Defined in Data.Profunctor.Ran 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 #