模块 MoreLabels.Set

module Set: sig .. end

有序类型上的集合。

此模块实现了集合数据结构,给定集合元素上的全序函数。集合上的所有操作都是纯应用的(没有副作用)。该实现使用平衡二叉树,因此效率相当高:例如,插入和成员资格的时间是对集合大小的对数时间。

MoreLabels.Set.Make 函子为任何类型构建实现,前提是给定一个 compare 函数。例如

       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))
     

这会创建一个新的模块 PairsSet,并具有一个新的类型 PairsSet.t,用于表示 int * int 的集合。

module type OrderedType = sig .. end

函子 MoreLabels.Set.Make 的输入签名。

module type S = sig .. end

函子 MoreLabels.Set.Make 的输出签名。

module Make: 
functor (Ord : OrderedType-> S with type elt = Ord.t and type t = Set.Make(Ord).t

给定完全有序类型,构建集合结构实现的函子。