monoidal-functors-0.1.1.0: Monoidal Functors Library
Safe HaskellNone
LanguageHaskell2010

Data.Functor.Monoidal

Synopsis

Documentation

class (Tensor t1 i1 cat, Tensor t0 i0 cat, Semigroupal cat t1 t0 f, Unital cat i1 i0 f) => Monoidal cat t1 i1 t0 i0 f Source #

A Monoidal Functor is a Functor between two Monoidal Categories which preserves the monoidal structure. Eg., a homomorphism of monoidal categories.

Laws

Associativity: combine (combine fx fy) fz ⟶ combine fx (combine fy fz) ↓ ↓ f (x t1 y) t1 fz combine fx (f (y t1 z)) ↓ ↓ f ((x t1 y) t1 z) ⟶ (f x t1 (y t1 z))

Left Unitality: empty t1 f x ⟶ f empty t1 f x ↓ ↓ f x ← f (empty t0 x)

Right Unitality: f x t1 empty ⟶ f x t1 f empty ↓ ↓ f x ← f (x t0 empty)

Instances

Instances details
Alternative f => Monoidal ((->) :: Type -> Type -> Type) Either Void (,) () f Source # 
Instance details

Defined in Data.Functor.Monoidal

Applicative f => Monoidal ((->) :: Type -> Type -> Type) (,) () (,) () f Source # 
Instance details

Defined in Data.Functor.Monoidal

class (Associative t1 cat, Associative t0 cat) => Semigroupal cat t1 t0 f where Source #

Methods

combine :: (f x `t0` f x') `cat` f (x `t1` x') Source #

Instances

Instances details
Alternative f => Semigroupal ((->) :: Type -> Type -> Type) Either (,) f Source # 
Instance details

Defined in Data.Functor.Monoidal

Methods

combine :: (f x, f x') -> f (Either x x') Source #

Applicative f => Semigroupal ((->) :: Type -> Type -> Type) (,) (,) f Source # 
Instance details

Defined in Data.Functor.Monoidal

Methods

combine :: (f x, f x') -> f (x, x') Source #

class Unital cat i1 i0 f where Source #

Methods

introduce :: i0 `cat` f i1 Source #

Instances

Instances details
Applicative f => Unital ((->) :: Type -> Type -> Type) () () f Source # 
Instance details

Defined in Data.Functor.Monoidal

Methods

introduce :: () -> f () Source #

Alternative f => Unital ((->) :: Type -> Type -> Type) Void () f Source # 
Instance details

Defined in Data.Functor.Monoidal

Methods

introduce :: () -> f Void Source #