Numeric Typeclasses
Semigroup - Set with closed binary operation that satisfies associativity
CommutativeSemigroup - Semigroup with operation that also satisfies commutativity
Monoid - Semigroup with an identity value
CommutativeMonoid - Monoid with operation that satisfies commutativity
Group - Monoid with inverses
AbelianGroup - Group with operation that satisfies commutativity