functor
(
S
:
Semigroup
.
S
)
->
sig
type
t =
S
.t option
val
append : t
->
t
->
t
val
zero : t
end