proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Instance.Product

Documentation

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

Equations

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

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

Equations

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

data ((c :: j1 +-> k1) :**: (d :: j2 +-> k2)) (a :: (k1, k2)) (b :: (j1, j2)) where Source Github #

Constructors

(:**:) 

Fields

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

Instances

Instances details
(ThinProfunctor p, ThinProfunctor q) => ThinProfunctor (p :**: q :: (k1, k2) -> (j1, j2) -> Type) Source Github # 
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 Github #

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

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

Defined in Proarrow.Category.Monoidal

Methods

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

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

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

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

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

Defined in Proarrow.Profunctor.Representable

Methods

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

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

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

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

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

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

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

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

Defined in Proarrow.Profunctor.Representable

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

(CategoryOf k1, CategoryOf k2) => CategoryOf (k1, k2) Source Github #

The product of two categories.

Instance details

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Instance.Product

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