/caterwaul/Category/Functor/monoidal
Copy path to clipboardThis cheats a bit on the unit, since dObject is Type, we don’t need a functor
Set → 𝒟.
Source
{-|
This cheats a bit on the unit, since `dObject` is Type, we don’t need a functor
**Set** → 𝒟.
-}
let cat = ../../Category/Cat/semigroupal
let vObject = Type
let MonoidalCategory = ../Monoidal/Kind cat vObject
in  λ(cObject : Kind) →
      let dObject = Type
      in  λ(v : ../Kind cat Type vObject) →
          λ(c : MonoidalCategory cObject) →
          λ(d : MonoidalCategory dObject) →
            let base = ../Monoidal/extractCategory cat vObject
            in      { unit = λ(x : cObject) → c.arrow { _1 = c.unit, _2 = x }
                    , product = ../../Day/Type cObject d c
                    }
                  ∧ ./category
                      cObject
                      dObject
                      v
                      (base cObject c)
                      (base dObject d)
                : MonoidalCategory (cat.arrow cObject dObject)