Module Monoid.FunctionSource

Functions that return a monoid form the following monoid:

Parameters

module A : sig ... end
module M : sig ... end

Signature

Sourcetype t = A.t -> M.t
Sourceval empty : t

Must be the identity of combine:

  • combine empty t = t
  • combine t empty = t
Sourceval combine : t -> t -> t

Must be associative:

  • combine a (combine b c) = combine (combine a b) c
Sourcemodule O : sig ... end
Sourceval reduce : t list -> t
Sourceval map_reduce : f:('a -> t) -> 'a list -> t