proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Profunctor.Instance.Day

Description

Day convolution of profunctors: Day p q convolves p and q along the tensors of the source and target categories, with unit DayUnit and internal hom DayExp. Monoidal profunctors are closed under it, and it preserves Procomonads.

Synopsis

Documentation

data DayUnit (a :: k) (b :: k1) where Source Github #

The unit of Day convolution: a pair of arrows through the monoidal units.

Constructors

DayUnit :: forall {k} {k1} (a :: k) (b :: k1). (a ~> (Unit :: k)) -> ((Unit :: k1) ~> b) -> DayUnit a b 

Instances

Instances details
(CategoryOf j, CategoryOf k) => Profunctor (DayUnit :: k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

dimap :: forall (c :: k) (a :: k) (b :: j) (d :: j). (c ~> a) -> (b ~> d) -> DayUnit a b -> DayUnit c d Source Github #

lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> DayUnit a b -> DayUnit c b Source Github #

rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> DayUnit a b -> DayUnit a d Source Github #

(\\) :: forall (a :: k) (b :: j) r. ((Ob a, Ob b) => r) -> DayUnit a b -> r Source Github #

data Day (p :: j +-> k) (q :: j +-> k) (a :: k) (b :: j) where Source Github #

The Day convolution on profunctors.

Constructors

Day :: forall {k} {j} (c :: k) (d :: j) (e :: k) (f :: j) (p :: j +-> k) (q :: j +-> k) (a :: k) (b :: j). (a ~> (c ** e)) -> p c d -> q e f -> ((d ** f) ~> b) -> Day p q a b 

Instances

Instances details
(w1 p1 q1, w2 p2 q2) => DayFl (w1 :: (j1 +-> j1) -> (j2 +-> j2) -> Constraint) (w2 :: (j1 +-> j1) -> (j2 +-> j2) -> Constraint) (Day p1 p2 :: j1 -> j1 -> Type) (Day q1 q2 :: j2 -> j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Optic.Day

(SymMonoidal j, SymMonoidal k, MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (Day p q :: k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

one :: Day p q (Unit :: k) (Unit :: j) Source Github #

(**) :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). Day p q x1 x2 -> Day p q y1 y2 -> Day p q (x1 ** y1) (x2 ** y2) Source Github #

(Profunctor p, Profunctor q) => Profunctor (Day p q :: k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

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

lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> Day p q a b -> Day p q c b Source Github #

rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> Day p q a b -> Day p q a d Source Github #

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

(Procomonad p, Procomonad q, Monoidal k) => Procomonad (Day p q :: k -> k -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

proextract :: Day p q :~> ((~>) :: CAT k) Source Github #

produplicate :: Day p q :~> (Day p q :.: Day p q) Source Github #

Functor (Day :: (j +-> k) -> (j +-> k) -> k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

map :: forall (a :: j +-> k) (b :: j +-> k). (a ~> b) -> Day a ~> Day b Source Github #

Profunctor p => Functor (Day p :: (j +-> k) -> k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

map :: forall (a :: j +-> k) (b :: j +-> k). (a ~> b) -> Day p a ~> Day p b Source Github #

day :: forall j k p q (c :: k) (d :: j) (e :: k) (f :: j). (Monoidal j, Monoidal k, Profunctor p, Profunctor q) => p c d -> q e f -> Day p q (c ** e) (d ** f) Source Github #

duoidal :: forall {i} j k (p :: j +-> k) (p' :: i +-> j) (q :: j +-> k) (q' :: i +-> j). (Monoidal j, Profunctor p, Profunctor p', Profunctor q, Profunctor q') => Day (p :.: p') (q :.: q') ~> (Day p q :.: Day p' q') Source Github #

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

The internal hom of Day convolution, making the category of profunctors Closed.

Constructors

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

Instances

Instances details
(Monoidal j, Monoidal k, Profunctor p, Profunctor q) => Profunctor (DayExp p q :: k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

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

lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> DayExp p q a b -> DayExp p q c b Source Github #

rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> DayExp p q a b -> DayExp p q a d Source Github #

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

(Monoidal j, Monoidal k, Profunctor p) => Functor (DayExp p :: (k -> j -> Type) -> k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

Methods

map :: forall (a :: k -> j -> Type) (b :: k -> j -> Type). (a ~> b) -> DayExp p a ~> DayExp p b Source Github #

multDayExp :: forall j k (p :: j +-> k) (q :: j +-> k) (p' :: j +-> k) (q' :: j +-> k). (SymMonoidal j, SymMonoidal k, Profunctor p, Profunctor q, Profunctor p', Profunctor q') => Day (p ~~> q) (p' ~~> q') ~> (Day p p' ~~> Day q q') Source Github #

day2comp :: forall k (p :: k +-> k) (q :: k +-> k). (MonStrong p, MonStrong q, Monoidal k) => Day p q ~> (p :.: q) Source Github #

Orphan instances

(Monoidal j, Monoidal k) => Monoidal (j +-> k) Source Github # 
Instance details

Associated Types

type Unit 
Instance details

Defined in Proarrow.Profunctor.Instance.Day

type Unit = DayUnit :: k -> j -> Type

Methods

withOb2 :: forall (a :: j +-> k) (b :: j +-> k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github #

leftUnitor :: forall (a :: j +-> k). Ob a => ((Unit :: j +-> k) ** a) ~> a Source Github #

leftUnitorInv :: forall (a :: j +-> k). Ob a => a ~> ((Unit :: j +-> k) ** a) Source Github #

rightUnitor :: forall (a :: j +-> k). Ob a => (a ** (Unit :: j +-> k)) ~> a Source Github #

rightUnitorInv :: forall (a :: j +-> k). Ob a => a ~> (a ** (Unit :: j +-> k)) Source Github #

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

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

(SymMonoidal j, SymMonoidal k) => SymMonoidal (j +-> k) Source Github # 
Instance details

Methods

swap :: forall (a :: j +-> k) (b :: j +-> k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Github #

(Monoidal j, Monoidal k) => Closed (j +-> k) Source Github # 
Instance details

Methods

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

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

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

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

(SymMonoidal j, CopyDiscard k, Supplies CommutativeMonoid j) => CopyDiscard (j +-> k) Source Github # 
Instance details

Methods

copy :: forall (a :: j +-> k). Ob a => a ~> (a ** a) Source Github #

discard :: forall (a :: j +-> k). Ob a => a ~> (Unit :: j +-> k) Source Github #

(Monoidal j, Monoidal k) => Distributive (j +-> k) Source Github # 
Instance details

Methods

distL :: forall (a :: j +-> k) (b :: j +-> k) (c :: j +-> k). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github #

distR :: forall (a :: j +-> k) (b :: j +-> k) (c :: j +-> k). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github #

absorbL :: forall (a :: j +-> k). Ob a => (a ** (InitialObject :: j +-> k)) ~> (InitialObject :: j +-> k) Source Github #

absorbR :: forall (a :: j +-> k). Ob a => ((InitialObject :: j +-> k) ** a) ~> (InitialObject :: j +-> k) Source Github #

(SymMonoidal j, CopyDiscard k, Supplies CommutativeMonoid j, Profunctor p) => CocommutativeComonoid (p :: j +-> k) Source Github # 
Instance details

(SymMonoidal j, CopyDiscard k, Supplies CommutativeMonoid j, Profunctor p) => Comonoid (p :: j +-> k) Source Github # 
Instance details

Methods

counit :: p ~> (Unit :: j +-> k) Source Github #

comult :: p ~> (p ** p) Source Github #

(Profunctor p, MonoidalProfunctor p) => Monoid (p :: j +-> k) Source Github # 
Instance details

Methods

mempty :: (Unit :: j +-> k) ~> p Source Github #

mappend :: (p ** p) ~> p Source Github #

(Monoidal j, Monoidal k) => MonoidalProfunctor (Prof :: (j +-> k) -> (j +-> k) -> Type) Source Github # 
Instance details

Methods

one :: Prof (Unit :: j +-> k) (Unit :: j +-> k) Source Github #

(**) :: forall (x1 :: j +-> k) (x2 :: j +-> k) (y1 :: j +-> k) (y2 :: j +-> k). Prof x1 x2 -> Prof y1 y2 -> Prof (x1 ** y1) (x2 ** y2) Source Github #