Copy path to clipboardSource
let cat = ../Category/Cat/semigroupal
let vObject = Type
let Set = ../Category/Rig/extractAdditive cat vObject Type ../Category/Set/rig
in λ(a : Type) →
{ unit = λ(b : Type) → (Set.product { _1 = a, _2 = b }).Right
, product =
λ(b : Type) →
λ ( fa
: Set.product { _1 = a, _2 = Set.product { _1 = a, _2 = b } }
) →
merge
{ Left = (Set.product { _1 = a, _2 = b }).Left
, Right = λ(e : Set.product { _1 = a, _2 = b }) → e
}
( merge
{ Left =
( Set.product
{ _1 = a, _2 = Set.product { _1 = a, _2 = b } }
).Left
, Right =
( Set.product
{ _1 = a, _2 = Set.product { _1 = a, _2 = b } }
).Right
}
fa
)
}
: ../Monad/Type
Type
( ../Category/Monoidal/Cartesian/extractCategory
cat
vObject
Type
../Category/Set/monoidal/cartesian
)
(λ(b : Type) → Set.product { _1 = a, _2 = b })