我正在查看map.ml文件,看看它是什么,我遇到了一个我不明白的签名。它的S签名。
module type S =
sig
type key
...
val mapi: (key -> 'a -> 'b) -> 'a t -> 'b t
end
我理解签名OrderedType和仿函数Make如何结合使用来创建模块,但我不知道S签名如何适合地图模块。 S签名只是Make?
创建的模块的通用签名答案 0 :(得分:3)
是的,S是Map.Make仿函数的输出类型。换句话说,当您将Map.Make应用于有序类型时,您将获得S类型的模块,其中S.key是有序类型。因此,S本质上是地图的类型,除了需要通过应用Map.Make来填充键类型。