proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Category.Instance.Coproduct

Documentation

data COPRODUCT j k Source Comments #

Constructors

L j 
R k 

Instances

Instances details
(CategoryOf j, CategoryOf k) => Representable (LftCat :: COPRODUCT j k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

index :: forall (a :: COPRODUCT j k) (b :: j). LftCat a b -> a ~> ((LftCat :: COPRODUCT j k -> j -> Type) % b) Source Comments #

tabulate :: forall (b :: j) (a :: COPRODUCT j k). Ob b => (a ~> ((LftCat :: COPRODUCT j k -> j -> Type) % b)) -> LftCat a b Source Comments #

repMap :: forall (a :: j) (b :: j). (a ~> b) -> ((LftCat :: COPRODUCT j k -> j -> Type) % a) ~> ((LftCat :: COPRODUCT j k -> j -> Type) % b) Source Comments #

(CategoryOf j, CategoryOf k) => Representable (RgtCat :: COPRODUCT j k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

index :: forall (a :: COPRODUCT j k) (b :: k). RgtCat a b -> a ~> ((RgtCat :: COPRODUCT j k -> k -> Type) % b) Source Comments #

tabulate :: forall (b :: k) (a :: COPRODUCT j k). Ob b => (a ~> ((RgtCat :: COPRODUCT j k -> k -> Type) % b)) -> RgtCat a b Source Comments #

repMap :: forall (a :: k) (b :: k). (a ~> b) -> ((RgtCat :: COPRODUCT j k -> k -> Type) % a) ~> ((RgtCat :: COPRODUCT j k -> k -> Type) % b) Source Comments #

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

Defined in Proarrow.Category.Limit

Methods

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

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

(Profunctor p, Profunctor q) => Profunctor (p :|||: q :: j1 -> COPRODUCT i j2 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

dimap :: forall (c :: j1) (a :: j1) (b :: COPRODUCT i j2) (d :: COPRODUCT i j2). (c ~> a) -> (b ~> d) -> (p :|||: q) a b -> (p :|||: q) c d Source Comments #

(\\) :: forall (a :: j1) (b :: COPRODUCT i j2) r. ((Ob a, Ob b) => r) -> (p :|||: q) a b -> r Source Comments #

(CategoryOf j, CategoryOf k) => CategoryOf (COPRODUCT j k) Source Comments # 
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 j, CategoryOf k) => Profunctor (LftCat :: COPRODUCT j k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

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

(\\) :: forall (a :: COPRODUCT j k) (b :: j) r. ((Ob a, Ob b) => r) -> LftCat a b -> r Source Comments #

(CategoryOf j, CategoryOf k) => Profunctor (RgtCat :: COPRODUCT j k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

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

(\\) :: forall (a :: COPRODUCT j k) (b :: k) r. ((Ob a, Ob b) => r) -> RgtCat a b -> r Source Comments #

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

Defined in Proarrow.Category.Colimit

Methods

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

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

(Representable p, Representable q) => Representable (p :|||: q :: k -> COPRODUCT i j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

index :: forall (a :: k) (b :: COPRODUCT i j). (p :|||: q) a b -> a ~> ((p :|||: q) % b) Source Comments #

tabulate :: forall (b :: COPRODUCT i j) (a :: k). Ob b => (a ~> ((p :|||: q) % b)) -> (p :|||: q) a b Source Comments #

repMap :: forall (a :: COPRODUCT i j) (b :: COPRODUCT i j). (a ~> b) -> ((p :|||: q) % a) ~> ((p :|||: q) % b) Source Comments #

(Profunctor p, Profunctor q) => Profunctor (p :++: q :: COPRODUCT k1 k2 -> COPRODUCT j1 j2 -> Type) Source Comments # 
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 Comments #

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

(DaggerProfunctor p, DaggerProfunctor q) => DaggerProfunctor (p :++: q :: COPRODUCT j1 j2 -> COPRODUCT j1 j2 -> Type) Source Comments # 
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 Comments #

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

Defined in Proarrow.Category.Instance.Coproduct

Methods

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

(.) :: 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 Comments #

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

Defined in Proarrow.Category.Colimit

type Colimit (Unweighted :: COPRODUCT () () -> () -> Type) (d :: COPRODUCT () () +-> k) = CoproductColimit d
type (LftCat :: COPRODUCT j k -> j -> Type) % (a :: j) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

type (LftCat :: COPRODUCT j k -> j -> Type) % (a :: j) = 'L a :: COPRODUCT j k
type (RgtCat :: COPRODUCT j k -> k -> Type) % (a :: k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

type (RgtCat :: COPRODUCT j k -> k -> Type) % (a :: k) = 'R a :: COPRODUCT j k
type (~>) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Coproduct

type (~>) = ((~>) :: CAT j) :++: ((~>) :: CAT k)
type Ob (a :: COPRODUCT j k) Source Comments # 
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 Comments # 
Instance details

Defined in Proarrow.Category.Limit

type Limit (Unweighted :: () -> COPRODUCT () () -> Type) (d :: COPRODUCT () () +-> k) = ProductLimit d
type (p :|||: q :: k -> COPRODUCT i j -> Type) % ('L a :: COPRODUCT i j) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

type (p :|||: q :: k -> COPRODUCT i j -> Type) % ('L a :: COPRODUCT i j) = p % a
type (p :|||: q :: k -> COPRODUCT i j -> Type) % ('R a :: COPRODUCT i j) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

type (p :|||: q :: k -> COPRODUCT i j -> Type) % ('R a :: COPRODUCT i j) = q % a

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

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 Comments # 
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 Comments #

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

(DaggerProfunctor p, DaggerProfunctor q) => DaggerProfunctor (p :++: q :: COPRODUCT j1 j2 -> COPRODUCT j1 j2 -> Type) Source Comments # 
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 Comments #

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

Defined in Proarrow.Category.Instance.Coproduct

Methods

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

(.) :: 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 Comments #

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

Methods

lrId :: forall (p :: PRO j j) (q :: PRO k k). (Promonad p, Promonad q) => (p :++: q) a a Source Comments #

Instances

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

Defined in Proarrow.Category.Instance.Coproduct

Methods

lrId :: forall (p :: PRO j j) (q :: PRO k k). (Promonad p, Promonad q) => (p :++: q) ('L a :: COPRODUCT j k) ('L a :: COPRODUCT j k) Source Comments #

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

Defined in Proarrow.Category.Instance.Coproduct

Methods

lrId :: forall (p :: PRO j j) (q :: PRO k k). (Promonad p, Promonad q) => (p :++: q) ('R a :: COPRODUCT j k) ('R a :: COPRODUCT j k) Source Comments #