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:
给定完全有序类型,构建集合结构实现的函子。