1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module type OrderedMonoid = sig
include Set.OrderedType
val append : t -> t -> t
end
module type S = sig
type elt
type t
val empty : t
val is_empty : t -> bool
val return : elt -> t
val append: t -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val merge : t list -> t
val of_list : elt list -> t
val to_iter : t -> elt Iter.t
val memoize : t -> t
end