The Kleisli construction on the Type category #
Define the Kleisli category for (control) monads.
CategoryTheory/Monad/Kleisli
defines the general version for a monad on C
, and demonstrates
the equivalence between the two.
TODO #
Generalise this to work with CategoryTheory.Monad
The Kleisli category on the (type-)monad m
. Note that the monad is not assumed to be lawful
yet.
Equations
Instances For
Construct an object of the Kleisli category from a type.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.KleisliCat.category = CategoryTheory.Category.mk ⋯ ⋯ ⋯
@[simp]
theorem
CategoryTheory.KleisliCat.id_def
{m : Type u_1 → Type u_2}
[Monad m]
(α : CategoryTheory.KleisliCat m)
:
theorem
CategoryTheory.KleisliCat.comp_def
{m : Type u_1 → Type u_2}
[Monad m]
(α : CategoryTheory.KleisliCat m)
(β : CategoryTheory.KleisliCat m)
(γ : CategoryTheory.KleisliCat m)
(xs : α ⟶ β)
(ys : β ⟶ γ)
(a : α)
:
CategoryTheory.CategoryStruct.comp xs ys a = xs a >>= ys
Equations
- CategoryTheory.instInhabitedKleisliCatId = { default := PUnit.{u_1 + 1} }
Equations
- CategoryTheory.instInhabitedMkId = { default := let_fun this := default; this }