Monoidal categories need not be based on a cartesian product. The
relevant alternative is coproducts.
The dual notion to
Cartesian replaces such products (pairs)
with sums (
Either), and unit
() with void types.
Basically, the only thing that doesn't mirror
Cartesian here is
that we don't require
CoMonoid (ZeroObject k).
Comonoids do in principle make sense, but not from a Haskell viewpoint
(every type is trivially a comonoid).
Haskell of course uses sum types,
variants, most often without
Either appearing. But variants are generally isomorphic to
sums; the most important (sums of unit) are methods here.