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 :: j1 +-> k1) :**: (d :: j2 +-> k2)) (a :: (k1, k2)) (b :: (j1, j2)) where Source Comments #

Constructors

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

Instances

Instances details
(Strong v p, Strong w q) => Strong (v :**: w :: (k4, k6) -> (j4, j6) -> Type) (p :**: q :: (k5, k7) -> (j5, j7) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

act :: forall (a :: (k4, k6)) (b :: (j4, j6)) (x :: (k5, k7)) (y :: (j5, j7)). (v :**: w) a b -> (p :**: q) x y -> (p :**: q) (Act a x) (Act b y) Source Comments #

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

Defined in Proarrow.Category.Instance.Product

Methods

par0 :: (p :**: q) (Unit :: (k1, k2)) (Unit :: (j1, j2)) Source Comments #

par :: forall (x1 :: (k1, k2)) (x2 :: (j1, j2)) (y1 :: (k1, k2)) (y2 :: (j1, j2)). (p :**: q) x1 x2 -> (p :**: q) y1 y2 -> (p :**: q) (x1 ** y1) (x2 ** y2) Source Comments #

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

Defined in Proarrow.Category.Instance.Product

Methods

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

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

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

Defined in Proarrow.Category.Instance.Product

Methods

anyArr :: forall (a :: (k1, k2)) (b :: (j1, j2)). (Ob a, Ob b) => (p :**: q) a b Source Comments #

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

Defined in Proarrow.Category.Instance.Product

Methods

arr :: forall (a :: (k1, k2)) (b :: (j1, j2)). (Ob a, Ob b, HasArrow (p :**: q) a b) => (p :**: q) a b Source Comments #

withArr :: forall (a :: (k1, k2)) (b :: (j1, j2)) r. (p :**: q) a b -> (HasArrow (p :**: q) a b => r) -> r Source Comments #

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

Defined in Proarrow.Category.Instance.Product

Methods

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

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

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

(DaggerProfunctor p, DaggerProfunctor q) => DaggerProfunctor (p :**: q :: (j1, j2) -> (j1, j2) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

dagger :: forall (a :: (j1, j2)) (b :: (j1, j2)). (p :**: q) a b -> (p :**: q) b a Source Comments #

(Promonad p, Promonad q) => Promonad (p :**: q :: (j1, j2) -> (j1, j2) -> Type) Source Comments #

The product promonad of promonads p and q.

Instance details

Defined in Proarrow.Category.Instance.Product

Methods

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

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

(Discrete p, Discrete q) => Discrete (p :**: q :: (j1, j2) -> (j1, j2) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

withEq :: forall (a :: (j1, j2)) (b :: (j1, j2)) r. (p :**: q) a b -> (a ~ b => r) -> r Source Comments #

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

Defined in Proarrow.Category.Instance.Product

type (p :**: q :: (k1, k2) -> (j1, j2) -> Type) % ('(a, b) :: (j1, j2)) = '(p % a, q % b)
type HasArrow (p :**: q :: (k1, k2) -> (j1, j2) -> Type) ('(a1, a2) :: (k1, k2)) ('(b1, b2) :: (j1, j2)) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

type HasArrow (p :**: q :: (k1, k2) -> (j1, j2) -> Type) ('(a1, a2) :: (k1, k2)) ('(b1, b2) :: (j1, j2)) = (HasArrow p a1 b1, HasArrow q a2 b2)

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

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

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

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

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

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

associatorInv :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). (Ob a, Ob b, Ob 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)) (a' :: (j, k)) (b :: (j, k)) (b' :: (j, k)). (a ~> a') -> (b ~> 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)
(MonoidalAction n j, MonoidalAction m k) => MonoidalAction (n, m) (j, k) Source Comments # 
Instance details

Methods

unitor :: forall (x :: (j, k)). Ob x => Act (Unit :: (n, m)) x ~> x Source Comments #

unitorInv :: forall (x :: (j, k)). Ob x => x ~> Act (Unit :: (n, m)) x Source Comments #

multiplicator :: forall (a :: (n, m)) (b :: (n, m)) (x :: (j, k)). (Ob a, Ob b, Ob x) => Act a (Act b x) ~> Act (a ** b) x Source Comments #

multiplicatorInv :: forall (a :: (n, m)) (b :: (n, m)) (x :: (j, k)). (Ob a, Ob b, Ob x) => Act (a ** b) x ~> Act a (Act b x) Source Comments #