Set(3) OCaml library Set(3)

# [NAME](#NAME)

Set - Sets over ordered types.

# [Module](#Module)

Module Set

# [Documentation](#Documentation)

Module **Set**  
: **sig end**

Sets over ordered types.

This module implements the set data structure, given a total ordering function over the set elements. All operations over sets are purely applicative (no side-effects). The implementation uses balanced binary trees, and is therefore reasonably efficient: insertion and membership take time logarithmic in the size of the set, for instance.

The **Set.Make** functor constructs implementations for any type, given a **compare** function. For instance:

```


     module IntPairs =


       struct


         type t = int * int


         let compare (x0,y0) (x1,y1) =


           match Stdlib.compare x0 x1 with


               0 -> Stdlib.compare y0 y1


             | c -> c


       end




     module PairsSet = Set.Make(IntPairs)




     let m = PairsSet.(empty |> add (2,3) |> add (5,7) |> add (11,13))


   
```

This creates a new module **PairsSet** , with a new type **PairsSet.t** of sets of **int * int** .

*module type OrderedType =* **sig end**

Input signature of the functor **Set.Make** .

*module type S =* **sig end**

Output signature of the functor **Set.Make** .

*module Make :* **(Ord : OrderedType) -&gt; sig end**

Functor building an implementation of the set structure given a totally ordered type.

2026-10-01 OCamldoc

---

Document: Set(3o) from ocaml 5.5.1-r1 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
