Curry and uncurry, as functors. #
We define curry : ((C × D) ⥤ E) ⥤ (C ⥤ (D ⥤ E))
and uncurry : (C ⥤ (D ⥤ E)) ⥤ ((C × D) ⥤ E)
,
and verify that they provide an equivalence of categories
currying : (C ⥤ (D ⥤ E)) ≌ ((C × D) ⥤ E)
.
The uncurrying functor, taking a functor C ⥤ (D ⥤ E)
and producing a functor (C × D) ⥤ E
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The object level part of the currying functor. (See curry
for the functorial version.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
The currying functor, taking a functor (C × D) ⥤ E
and producing a functor C ⥤ (D ⥤ E)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence of functor categories given by currying/uncurrying.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor uncurry : (C ⥤ D ⥤ E) ⥤ C × D ⥤ E
is fully faithful.
Equations
- CategoryTheory.fullyFaithfulUncurry = CategoryTheory.currying.fullyFaithfulFunctor
Instances For
Given functors F₁ : C ⥤ D
, F₂ : C' ⥤ D'
and G : D × D' ⥤ E
, this is the isomorphism
between curry.obj ((F₁.prod F₂).comp G)
and
F₁ ⋙ curry.obj G ⋙ (whiskeringLeft C' D' E).obj F₂
in the category C ⥤ C' ⥤ E
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
F.flip
is isomorphic to uncurrying F
, swapping the variables, and currying.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The uncurrying of F.flip
is isomorphic to
swapping the factors followed by the uncurrying of F
.
Equations
- CategoryTheory.uncurryObjFlip F = CategoryTheory.NatIso.ofComponents (fun (x : D × C) => CategoryTheory.Iso.refl ((CategoryTheory.uncurry.obj F.flip).obj x)) ⋯
Instances For
A version of CategoryTheory.whiskeringRight
for bifunctors, obtained by uncurrying,
applying whiskeringRight
and currying back
Equations
- One or more equations did not get rendered due to their size.