A monoidal category is a category where morphisms can be composed in parallel.

1 Monoidal category

A monoidal category is a category \(\cC\) equipped with

  • monoidal multiplication: a bifunctor \(\otimes: \cC \times \cC \to \cC\)
  • monoidal unit: a \(\cC\)-object \(I\)
  • associator: a natural isomorphism \(\alpha_{A, B, C}: (A \otimes B) \otimes C \to A \otimes (B \otimes C)\)
  • left unitor: a natural isomorphism \(\lambda_A: I \otimes A \to A\)
  • right unitor: a natural isomorphism \(\rho_A: A \otimes I \to A\)

such that the triangle and pentagon diagrams commute.

A monoidal category is strict if \(\alpha\), \(\lambda\), and \(\rho\) are all identity morphisms.

1.1 Braided monoidal category

A braided monoidal category is a monoidal category \((\cC, \otimes, I, \alpha, \lambda, \rho)\) equipped with

  • braiding: a natural isomorphism \(\beta_{A, B}: A \otimes B \to B \otimes A\)

such that the hexagon diagram commutes.

1.2 Symmetric monoidal category

A symmetric monoidal category is a braided monoidal category \((\cC, \otimes, I, \alpha, \lambda, \rho, \beta)\) whose braiding \(\beta\) satisfies \(\beta_{B, A} \circ \beta_{A, B} = \id_{A \otimes B}\).

2 Monoidal functor

For monoidal categories \(\cC\) and \(\cD\), a lax monoidal functor is a functor \(F: \cC \to \cD\) equipped with

  • a natural transformation \(\mu_{A, B}: FA \otimes_\cD FB \to F(A \otimes_\cC B)\)
  • a \(\cD\)-morphism \(\eta: I_\cD \to FI_\cC\)

subject to

  • associativity: \(\mu (\id \otimes \mu) \alpha_\cD = (F\alpha_\cC) \mu (\mu \otimes \id)\)
  • identity: \((F \lambda_\cC) \mu (\eta \otimes \id) = \lambda_\cD\) and \((F \rho_\cC) \mu (\id \otimes \eta) = \rho_\cD\)


  • lax: morphisms
  • strong: isomorphisms
  • strict: identity morphisms
-- applicative function application
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
(<*)  :: Applicative f => f a -> f b -> f a
 (*>) :: Applicative f => f a -> f b -> f b

2.1 Braided monoidal functor

A braided monoidal functor is a monoidal functor that is compatible with

  • braiding: \(\mu \beta_\cD = (F\beta_\cC) \mu\)

2.2 Symmetric monoidal functor

A symmetric monoidal functor is a braided monoidal functor between symmetric monoidal categories.

3 Monoidal natural transformation

A monoidal natural transformation \(\alpha: F \to G\) between two monoidal categories is a natural transformation that is compatible with

  • monoidal multiplication: \(\mu_G (\alpha \otimes \alpha) = \alpha \mu_F\)
  • monoidal unit: \(\alpha \eta_F = \eta_G\)

4 Monoid object

A monoid object in a monoidal category \((\cC, \otimes, I, \alpha, \lambda, \rho)\) is a \(\cC\)-object \(M\) equipped with two \(\cC\)-morphisms:

  • multiplication \(\mu: M \otimes M \to M\)
  • unit \(\eta: I \to M\)

subject to

  • associativity: \(\mu (\id \otimes \mu) \alpha = \mu (\mu \otimes \id)\)
  • identity: \(\mu (\eta \otimes \id) = \lambda\) and \(\mu (\id \otimes \eta) = \rho\)
-- mappend
(<>) :: Monoid m => m -> m -> m

A monoid homomorphism between two monoid objects \(M\) and \(N\) in \(\cC\) is a \(\cC\)-morphism \(f: M \to N\) that preserves

  • monoidal multiplication: \(\mu_N \circ (f \otimes f) = f \circ \mu_M\)
  • monoidal unit: \(f \circ \eta_M = \eta_N\)
  • a monoid object = a lax monoidal functor \(M: (\cOne, \otimes, *) \to (\cC, \otimes, I)\)
  • a monoid homomorphism = a monoidal natural transformation \(f: M \nat N\)


  • monoid: \(\cSet\)
  • ring: \(\cAb\)
  • monad: \([\cC, \cC]\)

A comonoid object in \(\cC\) is a monoid object in \(\cC\op\).

  • comultiplication \(\Delta: M \to M \otimes M\)
  • counit \(\epsilon: M \to I\)

5 M-module

For a monoid object \((M, \mu, \eta)\) in a monoidal category \((\cC, \otimes, I, \alpha, \lambda, \rho)\), a (left) module over a monoid object (M-module) is an F-algebra \((A, \act_A: M \otimes A \to A)\) for the endofunctor

\[\begin{aligned} (M \otimes -): \cC &\to \cC \\ A &\mapsto M \otimes A \\ f &\mapsto \id_M \otimes f \end{aligned}\]

that is compatible with

  • monoid multiplication: \(\act (\id \otimes \act) \alpha = \act (\mu \otimes \id)\)
  • monoid unit: \(\act (\eta \otimes \id) = \lambda\)

An M-module homomorphism is an F-algebra homomorphism.