monoidal-functors-0.1.0.0: src/Data/Trifunctor/Monoidal.hs
module Data.Trifunctor.Monoidal where
import Control.Category.Tensor
class
( Associative t1 cat
, Associative t2 cat
, Associative t3 cat
, Associative to cat
) => Semigroupal cat t1 t2 t3 to f where
combine :: to (f x y z) (f x' y' z') `cat` f (t1 x x') (t2 y y') (t3 z z')
class Unital cat i1 i2 i3 o f where
introduce :: o `cat` f i1 i2 i3
class
( Tensor t1 i1 cat
, Tensor t2 i2 cat
, Tensor t3 i3 cat
, Tensor to io cat
, Semigroupal cat t1 t2 t3 to f
, Unital cat i1 i2 i3 io f
) => Monoidal cat t1 i1 t2 i2 t3 i3 to io f