proarrow
Safe HaskellNone
LanguageHaskell2010

Proarrow.Profunctor.Exponential

Documentation

data ((p :: k -> k1 -> Type) :~>: (q :: k -> k1 -> Type)) (a :: k) (b :: k1) where Source Comments #

Constructors

Exp :: forall {k} {k1} (a :: k) (b :: k1) (p :: k -> k1 -> Type) (q :: k -> k1 -> Type). (Ob a, Ob b) => (forall (c :: k) (d :: k1). (c ~> a) -> (b ~> d) -> p c d -> q c d) -> (p :~>: q) a b 

Instances

Instances details
(Profunctor p, Profunctor q) => Profunctor (p :~>: q :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Exponential

Methods

dimap :: forall (c :: k) (a :: k) (b :: j) (d :: j). (c ~> a) -> (b ~> d) -> (p :~>: q) a b -> (p :~>: q) c d Source Comments #

(\\) :: forall (a :: k) (b :: j) r. ((Ob a, Ob b) => r) -> (p :~>: q) a b -> r Source Comments #

(ThinProfunctor p, ThinProfunctor q, Discrete j, Discrete k) => ThinProfunctor (p :~>: q :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Exponential

Methods

arr :: forall (a :: k) (b :: j). (Ob a, Ob b, HasArrow (p :~>: q) a b) => (p :~>: q) a b Source Comments #

withArr :: forall (a :: k) (b :: j) r. (p :~>: q) a b -> (HasArrow (p :~>: q) a b => r) -> r Source Comments #

type HasArrow (p :~>: q :: k -> j -> Type) (a :: k) (b :: j) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Exponential

type HasArrow (p :~>: q :: k -> j -> Type) (a :: k) (b :: j) = HasArrow p a b :=> HasArrow q a b

Orphan instances

(CategoryOf j, CategoryOf k) => Closed (PROD (j +-> k)) Source Comments # 
Instance details

Methods

withObExp :: forall (a :: PROD (j +-> k)) (b :: PROD (j +-> k)) r. (Ob a, Ob b) => (Ob (a ~~> b) => r) -> r Source Comments #

curry :: forall (a :: PROD (j +-> k)) (b :: PROD (j +-> k)) (c :: PROD (j +-> k)). (Ob a, Ob b) => ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

apply :: forall (a :: PROD (j +-> k)) (b :: PROD (j +-> k)). (Ob a, Ob b) => ((a ~~> b) ** a) ~> b Source Comments #

(^^^) :: forall (a :: PROD (j +-> k)) (b :: PROD (j +-> k)) (x :: PROD (j +-> k)) (y :: PROD (j +-> k)). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #