This library provides constraint kinds for (right) pre-semirings, semirings, and rings, as well as some useful instances.
The Semiring
kind imposes fairly minimal requirements—the various 'add-on' properties (e.g. multiplicative commutativity) are catalogued in Data.Semiring.Property
.