module type Seed = sig ... end
module type S = sig ... end
A monoid is a set of objects with an associative binary operation over it and a privileged
unit element that acts as an identity.
Law notes the laws that should be obeyed by any instantiation of Monoid in the form of predicates that should hold true for any arguments of the appropriate type.
Module functors for creating implementations of Monoid
make (unit : t) (op : t -> t -> t) is an implementation of Monoid over the type
t with the given
of_semigroup semi unit forms an implementation of Monoid by enriching the give semigroup
semi with the
module Bool : sig ... end
module Int : sig ... end
module Option : sig ... end
Semigroups over option types