模块 Map

module Map: sig .. end

有序类型上的关联表。

此模块实现了应用性关联表,也称为有限映射或字典,在键上给定一个全序函数。所有对映射的操作都是纯粹的应用性(没有副作用)。实现使用平衡二叉树,因此搜索和插入所需时间与映射的大小成对数关系。

例如

     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 PairsMap = Map.Make(IntPairs)

     let m = PairsMap.(empty |> add (0,1) "hello" |> add (1,0) "world")
   

这将创建一个新的模块 PairsMap,其中包含一个新的类型 'PairsMap.t,表示从 int * int'a 的映射。在这个例子中,m 包含 string 值,所以它的类型是 string PairsMap.t


module type OrderedType = sig .. end

函子 Map.Make 的输入签名。

module type S = sig .. end

函子 Map.Make 的输出签名。

module Make: 
functor (Ord : OrderedType-> S with type key = Ord.t

给定一个全序类型,构建映射结构实现的函子。