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

Proarrow.Category.Instance.Product

Documentation

type family Fst (a1 :: (a, b)) :: a where ... Source Comments #

Equations

Fst ('(a2, b2) :: (a1, b1)) = a2 

type family Snd (a1 :: (a, b)) :: b where ... Source Comments #

Equations

Snd ('(a2, b2) :: (a1, b1)) = b2 

data ((c :: CAT k1) :**: (d :: CAT k2)) (a :: (k1, k2)) (b :: (k1, k2)) where Source Comments #

Constructors

(:**:) :: forall {k1} {k2} (c :: CAT k1) (a1 :: k1) (b1 :: k1) (d :: CAT k2) (a2 :: k2) (b2 :: k2). c a1 b1 -> d a2 b2 -> (c :**: d) '(a1, a2) '(b1, b2) 

Instances

Instances details
(Profunctor p, Profunctor q) => Profunctor (p :**: q :: (k1, k2) -> (k1, k2) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

dimap :: forall (c :: (k1, k2)) (a :: (k1, k2)) (b :: (k1, k2)) (d :: (k1, k2)). (c ~> a) -> (b ~> d) -> (p :**: q) a b -> (p :**: q) c d Source Comments #

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

(Representable p, Representable q) => Representable (p :**: q :: (k1, k2) -> (k1, k2) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

index :: forall (a :: (k1, k2)) (b :: (k1, k2)). (p :**: q) a b -> a ~> ((p :**: q) % b) Source Comments #

tabulate :: forall (b :: (k1, k2)) (a :: (k1, k2)). Ob b => (a ~> ((p :**: q) % b)) -> (p :**: q) a b Source Comments #

repMap :: forall (a :: (k1, k2)) (b :: (k1, k2)). (a ~> b) -> ((p :**: q) % a) ~> ((p :**: q) % b) Source Comments #

(Promonad p, Promonad q) => Promonad (p :**: q :: (k1, k2) -> (k1, k2) -> Type) Source Comments #

The product promonad of promonads p and q.

Instance details

Defined in Proarrow.Category.Instance.Product

Methods

id :: forall (a :: (k1, k2)). Ob a => (p :**: q) a a Source Comments #

(.) :: forall (b :: (k1, k2)) (c :: (k1, k2)) (a :: (k1, k2)). (p :**: q) b c -> (p :**: q) a b -> (p :**: q) a c Source Comments #

type (p :**: q :: (k1, k2) -> (k1, k2) -> Type) % ('(a, b) :: (k1, k2)) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

type (p :**: q :: (k1, k2) -> (k1, k2) -> Type) % ('(a, b) :: (k1, k2)) = '(p % a, q % b)

Orphan instances

(Monoidal j, Monoidal k) => Monoidal (j, k) Source Comments # 
Instance details

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Product

type Unit = '(Unit :: j, Unit :: k)

Methods

par :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)) (d :: (j, k)). (a ~> b) -> (c ~> d) -> (a ** c) ~> (b ** d) Source Comments #

leftUnitor :: forall (a :: (j, k)). Obj a -> ((Unit :: (j, k)) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: (j, k)). Obj a -> a ~> ((Unit :: (j, k)) ** a) Source Comments #

rightUnitor :: forall (a :: (j, k)). Obj a -> (a ** (Unit :: (j, k))) ~> a Source Comments #

rightUnitorInv :: forall (a :: (j, k)). Obj a -> a ~> (a ** (Unit :: (j, k))) Source Comments #

associator :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(SymMonoidal j, SymMonoidal k) => SymMonoidal (j, k) Source Comments # 
Instance details

Methods

swap' :: forall (a :: (j, k)) (b :: (j, k)). Obj a -> Obj b -> (a ** b) ~> (b ** a) Source Comments #

(CategoryOf k1, CategoryOf k2) => CategoryOf (k1, k2) Source Comments # 
Instance details

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Instance.Product

type (~>) = ((~>) :: CAT k1) :**: ((~>) :: CAT k2)