- class Multiplicative r => Unital r where
- one :: r
- pow :: Whole n => r -> n -> r
- productWith :: Foldable f => (a -> r) -> f a -> r

- product :: (Foldable f, Unital r) => f r -> r
- class Algebra r a => UnitalAlgebra r a where
- unit :: r -> a -> r

- class Coalgebra r c => CounitalCoalgebra r c where
- counit :: (c -> r) -> r

- class (UnitalAlgebra r a, CounitalCoalgebra r a) => Bialgebra r a

# Unital Multiplication (Multiplicative monoid)

class Multiplicative r => Unital r whereSource

# Unital Associative Algebra

class Algebra r a => UnitalAlgebra r a whereSource

An associative unital algebra over a semiring, built using a free module

# Unital Coassociative Coalgebra

class Coalgebra r c => CounitalCoalgebra r c whereSource

# Bialgebra

class (UnitalAlgebra r a, CounitalCoalgebra r a) => Bialgebra r a Source

A bialgebra is both a unital algebra and counital coalgebra
where the `mult`

and `unit`

are compatible in some sense with
the `comult`

and `counit`

. That is to say that
`mult`

and `unit`

are a coalgebra homomorphisms or (equivalently) that
`comult`

and `counit`

are an algebra homomorphisms.

Semiring r => Bialgebra r () | |

Rng k => Bialgebra k ComplexBasis | |

(TriviallyInvolutive r, Rng r) => Bialgebra r QuaternionBasis | |

Rng k => Bialgebra k DualBasis | |

(Commutative k, Monoidal k, Semiring k) => Bialgebra k HyperBasis' | |

(Commutative k, Semiring k) => Bialgebra k HyperBasis | |

Rng k => Bialgebra k DualBasis' | |

(Commutative k, Rng k) => Bialgebra k TrigBasis | |

(TriviallyInvolutive r, Rng r) => Bialgebra r QuaternionBasis' | |

(Monoidal r, Semiring r) => Bialgebra r (Seq a) | |

(Monoidal r, Semiring r) => Bialgebra r [a] | |

(Bialgebra r a, Bialgebra r b) => Bialgebra r (a, b) | |

(Bialgebra r a, Bialgebra r b, Bialgebra r c) => Bialgebra r (a, b, c) | |

(Bialgebra r a, Bialgebra r b, Bialgebra r c, Bialgebra r d) => Bialgebra r (a, b, c, d) | |

(Bialgebra r a, Bialgebra r b, Bialgebra r c, Bialgebra r d, Bialgebra r e) => Bialgebra r (a, b, c, d, e) |