profunctors-5.6.2: Profunctors
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

Documentation

newtype Ran p q a b Source #

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 .

Constructors

Ran

Fields

Instances

Instances details
ProfunctorFunctor ( Ran p :: ( Type -> Type -> Type ) -> k -> Type -> Type ) Source #
Instance details

Defined in Data.Profunctor.Ran

Methods

promap :: forall (p0 :: Type -> Type -> Type ) (q :: Type -> Type -> Type ). Profunctor p0 => (p0 :-> q) -> Ran p p0 :-> Ran p q Source #

p ~ q => Category ( Ran p q :: k2 -> k2 -> Type ) Source #

Ran p p forms a Monad in the Profunctor 2-category, which is isomorphic to a Haskell Category instance.

Instance details

Defined in Data.Profunctor.Ran

Methods

id :: forall (a :: k). Ran p q a a Source #

(.) :: forall (b :: k) (c :: k) (a :: k). Ran p q b c -> Ran p q a b -> Ran p q a c Source #

Category p => ProfunctorComonad ( Ran p :: ( Type -> Type -> Type ) -> Type -> Type -> Type ) Source #
Instance details

Defined in Data.Profunctor.Ran

( Profunctor p, Profunctor q) => Profunctor ( Ran p q) Source #
Instance details

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 #
Instance details

Defined in Data.Profunctor.Ran

Methods

fmap :: (a0 -> b) -> Ran p q a a0 -> Ran p q a b Source #

(<$) :: a0 -> Ran p q a b -> Ran p q a a0 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 (->) then decomposeRan is the counit of the adjunction.

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

Instances details
Category ( Codensity p :: k2 -> k2 -> Type ) Source #
Instance details

Defined in Data.Profunctor.Ran

Methods

id :: forall (a :: k). Codensity p a a Source #

(.) :: forall (b :: k) (c :: k) (a :: k). Codensity p b c -> Codensity p a b -> Codensity p a c Source #

Profunctor p => Profunctor ( Codensity p) Source #
Instance details

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 #
Instance details

Defined in Data.Profunctor.Ran

Methods

fmap :: (a0 -> b) -> Codensity p a a0 -> Codensity p a b Source #

(<$) :: a0 -> Codensity p a b -> Codensity p a a0 Source #