Preface_specs.SemigroupA Semigroup is a type t which provides a binary associative operation combine which lets you combine any two values of t into one.
To ensure that the derived combiners work properly, the combine function must comply with the following laws:
combine (combine a b) c = combine a (combine b c) module type WITH_COMBINE = sig ... endThe minimum definition of a Semigroup. It is by using the combinators of this module that the other combinators will be derived.
module type CORE = WITH_COMBINEBasis operations.
module type OPERATION = sig ... endAdditional operations.
module type INFIX = sig ... endInfix operators.
module type API = sig ... endThe complete interface of a Semigroup.