An abelian group is a group whose operation is commutative.
A boolean algebra is a structure that defines a few basic operations, namely as conjunction (&), disjunction (|), and negation (~).
CMonoid represents a commutative monoid.
CRig is a Rig that is commutative under multiplication.
CRing is a Ring that is commutative under multiplication.
CSemigroup represents a commutative semigroup.
A type class used to determine equality between 2 instances of the same type.
A FieldAlgebra is a vector space that is also a Ring.
A group is a monoid where each element has an inverse.
A simple type class for numeric types that are a subset of the reals.
This type class models a metric space V.
A module generalizes a vector space by requiring its scalar need only form a ring, rather than a field.
A monoid is a semigroup with an identity.
This is a type class for types with n-roots.
A normed vector space is a vector space equipped with a function
norm: V => F.
The Order type class is used to define a total ordering on some type A.
Rig is a ring whose additive structure doesn't have an inverse (ie.
Ring represents a set (A) that is a group over addition (+) and a monoid over multiplication (*).
A RingAlgebra is a module that is also a Rng.
Rng is a ring whose multiplicative structure doesn't have an identity (i.
A semigroup is any set A with an associative operation (op).
Semiring is a ring without identities or an inverse.
A simple ADT representing the Sign of an object.
A trait for things that have some notion of sign and the ability to ensure something has a positive sign.
A vector space is a group V that can be multiplied by scalars in F that
lie in a field.
Given any Ring[A] we can construct a RingAlgebra[A, Int].