/caterwaul/Semigroupoid/Type

Copy path to clipboard

FIXME: The hom profunctor should be implementable generically, however I can‘t currently get it to compile with Dhall, so it’s a member here, and every implementation is basically a copy/paste of compose (compose f g) h. Embedding the definition here also basically forces every category to be enriched over 𝐒𝐞𝐭.

Source

{-|

**FIXME**: The `hom` profunctor should be implementable generically, however I
can‘t currently get it to compile with Dhall, so it’s a member here, and every
implementation is basically a copy/paste of `compose (compose f g) h`. Embedding
the definition here also basically forces every category to be enriched over
𝐒𝐞𝐭.
-}
let kCat = ../Category/Cat/semigroupal

let vObject = Type

in λ(object : Kind) →
λ(v : ../Category/Monoidal/Kind kCat Type vObject) →
λ(cat : ../Category/Kind kCat vObject object) →
λ(m : kCat.arrow (kCat.product object object) vObject) →
let profunctor = kCat.arrow (kCat.product object object) vObject

in { hom : ../Functor/Profunctor/Type object object v cat cat m }
../Semigroup/Type
profunctor
(../Category/Profunctor/semigroupal object v cat)
m