proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Instance.Coproduct

Documentation

data COPRODUCT j k Source Github #

Constructors

L j 
R k 

Instances

Instances details
(CategoryOf j, CategoryOf k) => FunctorForRep (Lft :: j +-> COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

fmap :: forall (a :: j) (b :: j). (a ~> b) -> ((Lft :: j +-> COPRODUCT j k) @ a) ~> ((Lft :: j +-> COPRODUCT j k) @ b) Source Github #

(CategoryOf j, CategoryOf k) => FunctorForRep (Rgt :: k +-> COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

fmap :: forall (a :: k) (b :: k). (a ~> b) -> ((Rgt :: k +-> COPRODUCT j k) @ a) ~> ((Rgt :: k +-> COPRODUCT j k) @ b) Source Github #

HasBinaryProducts k => HasLimits (Unweighted :: () -> COPRODUCT () () -> Type) k Source Github # 
Instance details

Defined in Proarrow.Limit

Methods

limit :: forall (d :: COPRODUCT () () +-> k). Representable d => (Limit (Unweighted :: () -> COPRODUCT () () -> Type) d :.: (Unweighted :: () -> COPRODUCT () () -> Type)) :~> d Source Github #

limitUniv :: forall (d :: COPRODUCT () () +-> k) (p :: () +-> k). (Representable d, Profunctor p) => ((p :.: (Unweighted :: () -> COPRODUCT () () -> Type)) :~> d) -> p :~> Limit (Unweighted :: () -> COPRODUCT () () -> Type) d Source Github #

(CategoryOf j, CategoryOf k) => CategoryOf (COPRODUCT j k) Source Github #

The coproduct of two categories.

Instance details

Defined in Proarrow.Category.Instance.Coproduct

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (~>) = ((~>) :: CAT j) :++: ((~>) :: CAT k)
CategoryOf k => FunctorForRep (Codiag :: COPRODUCT k k +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

fmap :: forall (a :: COPRODUCT k k) (b :: COPRODUCT k k). (a ~> b) -> ((Codiag :: COPRODUCT k k +-> k) @ a) ~> ((Codiag :: COPRODUCT k k +-> k) @ b) Source Github #

HasBinaryCoproducts k => HasColimits (Unweighted :: COPRODUCT () () -> () -> Type) k Source Github # 
Instance details

Defined in Proarrow.Colimit

Methods

colimit :: forall (d :: k +-> COPRODUCT () ()). Corepresentable d => ((Unweighted :: COPRODUCT () () -> () -> Type) :.: Colimit (Unweighted :: COPRODUCT () () -> () -> Type) d) :~> d Source Github #

colimitUniv :: forall (d :: k +-> COPRODUCT () ()) (p :: k +-> ()). (Corepresentable d, Profunctor p) => (((Unweighted :: COPRODUCT () () -> () -> Type) :.: p) :~> d) -> p :~> Colimit (Unweighted :: COPRODUCT () () -> () -> Type) d Source Github #

(Profunctor p, Profunctor q) => Profunctor (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

dimap :: forall (c :: COPRODUCT k1 k2) (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2) (d :: COPRODUCT j1 j2). (c ~> a) -> (b ~> d) -> (p :++: q) a b -> (p :++: q) c d Source Github #

lmap :: forall (c :: COPRODUCT k1 k2) (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). (c ~> a) -> (p :++: q) a b -> (p :++: q) c b Source Github #

rmap :: forall (b :: COPRODUCT j1 j2) (d :: COPRODUCT j1 j2) (a :: COPRODUCT k1 k2). (b ~> d) -> (p :++: q) a b -> (p :++: q) a d Source Github #

(\\) :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2) r. ((Ob a, Ob b) => r) -> (p :++: q) a b -> r Source Github #

(Corepresentable p, Corepresentable q) => Corepresentable (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

coindex :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). (p :++: q) a b -> ((p :++: q) %% a) ~> b Source Github #

cotabulate :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). Ob a => (((p :++: q) %% a) ~> b) -> (p :++: q) a b Source Github #

corepMap :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT k1 k2). (a ~> b) -> ((p :++: q) %% a) ~> ((p :++: q) %% b) Source Github #

corepUniv :: forall (a :: COPRODUCT k1 k2). Ob a => (p :++: q) a ((p :++: q) %% a) Source Github #

(Representable p, Representable q) => Representable (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

index :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). (p :++: q) a b -> a ~> ((p :++: q) % b) Source Github #

tabulate :: forall (b :: COPRODUCT j1 j2) (a :: COPRODUCT k1 k2). Ob b => (a ~> ((p :++: q) % b)) -> (p :++: q) a b Source Github #

repMap :: forall (a :: COPRODUCT j1 j2) (b :: COPRODUCT j1 j2). (a ~> b) -> ((p :++: q) % a) ~> ((p :++: q) % b) Source Github #

repUniv :: forall (a :: COPRODUCT j1 j2). Ob a => (p :++: q) ((p :++: q) % a) a Source Github #

(DaggerProfunctor p, DaggerProfunctor q) => DaggerProfunctor (p :++: q :: COPRODUCT j1 j2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

dagger :: forall (a :: COPRODUCT j1 j2) (b :: COPRODUCT j1 j2). (p :++: q) a b -> (p :++: q) b a Source Github #

(Promonad p, Promonad q) => Promonad (p :++: q :: COPRODUCT j1 j2 -> COPRODUCT j1 j2 -> Type) Source Github #

The coproduct of two promonads.

Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

id :: forall (a :: COPRODUCT j1 j2). Ob a => (p :++: q) a a Source Github #

(.) :: forall (b :: COPRODUCT j1 j2) (c :: COPRODUCT j1 j2) (a :: COPRODUCT j1 j2). (p :++: q) b c -> (p :++: q) a b -> (p :++: q) a c Source Github #

DiscreteProfunctor p => FunctorForRep (CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Collage

Methods

fmap :: forall (a :: COLLAGE p) (b :: COLLAGE p). (a ~> b) -> ((CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) @ a) ~> ((CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) @ b) Source Github #

type Colimit (Unweighted :: COPRODUCT () () -> () -> Type) (d :: k +-> COPRODUCT () ()) Source Github # 
Instance details

Defined in Proarrow.Colimit

type Colimit (Unweighted :: COPRODUCT () () -> () -> Type) (d :: k +-> COPRODUCT () ()) = Corep (CoproductColimit d)
type (Lft :: j +-> COPRODUCT j k) @ (a :: j) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Lft :: j +-> COPRODUCT j k) @ (a :: j) = 'L a :: COPRODUCT j k
type (Rgt :: k +-> COPRODUCT j k) @ (a :: k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Rgt :: k +-> COPRODUCT j k) @ (a :: k) = 'R a :: COPRODUCT j k
type (~>) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (~>) = ((~>) :: CAT j) :++: ((~>) :: CAT k)
type Ob (a :: COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type Ob (a :: COPRODUCT j k) = IsLR a
type Limit (Unweighted :: () -> COPRODUCT () () -> Type) (d :: COPRODUCT () () +-> k) Source Github # 
Instance details

Defined in Proarrow.Limit

type Limit (Unweighted :: () -> COPRODUCT () () -> Type) (d :: COPRODUCT () () +-> k) = Rep (ProductLimit d)
type (Codiag :: COPRODUCT k k +-> k) @ ('L a :: COPRODUCT k k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Codiag :: COPRODUCT k k +-> k) @ ('L a :: COPRODUCT k k) = a
type (Codiag :: COPRODUCT k k +-> k) @ ('R a :: COPRODUCT k k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Codiag :: COPRODUCT k k +-> k) @ ('R a :: COPRODUCT k k) = a
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('L a :: COPRODUCT k1 k2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('L a :: COPRODUCT k1 k2) = 'L (p %% a) :: COPRODUCT j1 j2
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('R a :: COPRODUCT k1 k2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('R a :: COPRODUCT k1 k2) = 'R (q %% a) :: COPRODUCT j1 j2
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('L a :: COPRODUCT j1 j2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('L a :: COPRODUCT j1 j2) = 'L (p % a) :: COPRODUCT k1 k2
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('R a :: COPRODUCT j1 j2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('R a :: COPRODUCT j1 j2) = 'R (q % a) :: COPRODUCT k1 k2
type (CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) @ ('L a :: COLLAGE p) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Collage

type (CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) @ ('L a :: COLLAGE p) = 'L a :: COPRODUCT j k
type (CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) @ ('R a :: COLLAGE p) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Collage

type (CollageAsCoprod :: COLLAGE p +-> COPRODUCT j k) @ ('R a :: COLLAGE p) = 'R a :: COPRODUCT j k

data ((p :: j1 +-> k1) :++: (q :: j2 +-> k2)) (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2) where Source Github #

Constructors

InjL :: forall {j1} {k1} {j2} {k2} (p :: j1 +-> k1) (a1 :: k1) (b1 :: j1) (q :: j2 +-> k2). p a1 b1 -> (p :++: q) ('L a1 :: COPRODUCT k1 k2) ('L b1 :: COPRODUCT j1 j2) 
InjR :: forall {j2} {k2} {j1} {k1} (q :: j2 +-> k2) (a1 :: k2) (b1 :: j2) (p :: j1 +-> k1). q a1 b1 -> (p :++: q) ('R a1 :: COPRODUCT k1 k2) ('R b1 :: COPRODUCT j1 j2) 

Instances

Instances details
(Profunctor p, Profunctor q) => Profunctor (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

dimap :: forall (c :: COPRODUCT k1 k2) (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2) (d :: COPRODUCT j1 j2). (c ~> a) -> (b ~> d) -> (p :++: q) a b -> (p :++: q) c d Source Github #

lmap :: forall (c :: COPRODUCT k1 k2) (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). (c ~> a) -> (p :++: q) a b -> (p :++: q) c b Source Github #

rmap :: forall (b :: COPRODUCT j1 j2) (d :: COPRODUCT j1 j2) (a :: COPRODUCT k1 k2). (b ~> d) -> (p :++: q) a b -> (p :++: q) a d Source Github #

(\\) :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2) r. ((Ob a, Ob b) => r) -> (p :++: q) a b -> r Source Github #

(Corepresentable p, Corepresentable q) => Corepresentable (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

coindex :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). (p :++: q) a b -> ((p :++: q) %% a) ~> b Source Github #

cotabulate :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). Ob a => (((p :++: q) %% a) ~> b) -> (p :++: q) a b Source Github #

corepMap :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT k1 k2). (a ~> b) -> ((p :++: q) %% a) ~> ((p :++: q) %% b) Source Github #

corepUniv :: forall (a :: COPRODUCT k1 k2). Ob a => (p :++: q) a ((p :++: q) %% a) Source Github #

(Representable p, Representable q) => Representable (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

index :: forall (a :: COPRODUCT k1 k2) (b :: COPRODUCT j1 j2). (p :++: q) a b -> a ~> ((p :++: q) % b) Source Github #

tabulate :: forall (b :: COPRODUCT j1 j2) (a :: COPRODUCT k1 k2). Ob b => (a ~> ((p :++: q) % b)) -> (p :++: q) a b Source Github #

repMap :: forall (a :: COPRODUCT j1 j2) (b :: COPRODUCT j1 j2). (a ~> b) -> ((p :++: q) % a) ~> ((p :++: q) % b) Source Github #

repUniv :: forall (a :: COPRODUCT j1 j2). Ob a => (p :++: q) ((p :++: q) % a) a Source Github #

(DaggerProfunctor p, DaggerProfunctor q) => DaggerProfunctor (p :++: q :: COPRODUCT j1 j2 -> COPRODUCT j1 j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

dagger :: forall (a :: COPRODUCT j1 j2) (b :: COPRODUCT j1 j2). (p :++: q) a b -> (p :++: q) b a Source Github #

(Promonad p, Promonad q) => Promonad (p :++: q :: COPRODUCT j1 j2 -> COPRODUCT j1 j2 -> Type) Source Github #

The coproduct of two promonads.

Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

id :: forall (a :: COPRODUCT j1 j2). Ob a => (p :++: q) a a Source Github #

(.) :: forall (b :: COPRODUCT j1 j2) (c :: COPRODUCT j1 j2) (a :: COPRODUCT j1 j2). (p :++: q) b c -> (p :++: q) a b -> (p :++: q) a c Source Github #

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('L a :: COPRODUCT k1 k2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('L a :: COPRODUCT k1 k2) = 'L (p %% a) :: COPRODUCT j1 j2
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('R a :: COPRODUCT k1 k2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) %% ('R a :: COPRODUCT k1 k2) = 'R (q %% a) :: COPRODUCT j1 j2
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('L a :: COPRODUCT j1 j2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('L a :: COPRODUCT j1 j2) = 'L (p % a) :: COPRODUCT k1 k2
type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('R a :: COPRODUCT j1 j2) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) % ('R a :: COPRODUCT j1 j2) = 'R (q % a) :: COPRODUCT k1 k2

class IsLR (a :: COPRODUCT j k) where Source Github #

Methods

lrCase :: (forall (b :: j). (a ~ ('L b :: COPRODUCT j k), Ob b) => r) -> (forall (b :: k). (a ~ ('R b :: COPRODUCT j k), Ob b) => r) -> r Source Github #

Instances

Instances details
Ob a => IsLR ('L a :: COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

lrCase :: (forall (b :: j). (('L a :: COPRODUCT j k) ~ ('L b :: COPRODUCT j k), Ob b) => r) -> (forall (b :: k). (('L a :: COPRODUCT j k) ~ ('R b :: COPRODUCT j k), Ob b) => r) -> r Source Github #

Ob a => IsLR ('R a :: COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

lrCase :: (forall (b :: j). (('R a :: COPRODUCT j k) ~ ('L b :: COPRODUCT j k), Ob b) => r) -> (forall (b :: k). (('R a :: COPRODUCT j k) ~ ('R b :: COPRODUCT j k), Ob b) => r) -> r Source Github #

data family Lft :: j +-> COPRODUCT j k Source Github #

Instances

Instances details
(CategoryOf j, CategoryOf k) => FunctorForRep (Lft :: j +-> COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

fmap :: forall (a :: j) (b :: j). (a ~> b) -> ((Lft :: j +-> COPRODUCT j k) @ a) ~> ((Lft :: j +-> COPRODUCT j k) @ b) Source Github #

type (Lft :: j +-> COPRODUCT j k) @ (a :: j) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Lft :: j +-> COPRODUCT j k) @ (a :: j) = 'L a :: COPRODUCT j k

data family Rgt :: k +-> COPRODUCT j k Source Github #

Instances

Instances details
(CategoryOf j, CategoryOf k) => FunctorForRep (Rgt :: k +-> COPRODUCT j k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

fmap :: forall (a :: k) (b :: k). (a ~> b) -> ((Rgt :: k +-> COPRODUCT j k) @ a) ~> ((Rgt :: k +-> COPRODUCT j k) @ b) Source Github #

type (Rgt :: k +-> COPRODUCT j k) @ (a :: k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Rgt :: k +-> COPRODUCT j k) @ (a :: k) = 'R a :: COPRODUCT j k

data family Codiag :: COPRODUCT k k +-> k Source Github #

Instances

Instances details
CategoryOf k => FunctorForRep (Codiag :: COPRODUCT k k +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

Methods

fmap :: forall (a :: COPRODUCT k k) (b :: COPRODUCT k k). (a ~> b) -> ((Codiag :: COPRODUCT k k +-> k) @ a) ~> ((Codiag :: COPRODUCT k k +-> k) @ b) Source Github #

type (Codiag :: COPRODUCT k k +-> k) @ ('L a :: COPRODUCT k k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Codiag :: COPRODUCT k k +-> k) @ ('L a :: COPRODUCT k k) = a
type (Codiag :: COPRODUCT k k +-> k) @ ('R a :: COPRODUCT k k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (Codiag :: COPRODUCT k k +-> k) @ ('R a :: COPRODUCT k k) = a