Parameter Make_with_reduction.3-R

type key = Key.t
type data = Data.t
type accum
val identity : accum
val singleton : key:key -> data:data -> accum
val combine : accum -> accum -> accum

combine is required to be associative and have identity as its identity. In other words, they must form a monoid.