Module type Monoid.API

The complete interface of a Monoid.

Type

type t

the type held by the Monoid.

Functions

val combine : t -> t -> t

combine x y Combine two values (x and y) of t into one.

val neutral : t

The neutral element of the Monoid.

val times_nel : int -> t -> t option

times_nel n x apply combine on x n times. If n is lower than 1 the function will returns None.

val reduce_nel : t Preface_core.Nonempty_list.t -> t

Reduce a Nonempty_list.t using combine.

val times : int -> t -> t

times n x apply combine on x n times. If n is lower than 1 the function will returns neutral.

val reduce : t list -> t

Reduce a List.t using combine.

Infix operators

module Infix : INFIX with type t := t
val (<|>) : t -> t -> t

Infix version of CORE.combine