2014-02-22 78 views
2

我正在查看map.ml文件以查看它包含的内容,并且我遇到了一个我不明白的签名。它的S签名。OCaml映射模块

module type S = 
    sig 
    type key 
    ... 
    val mapi: (key -> 'a -> 'b) -> 'a t -> 'b t 
    end 

我明白是怎么签名OrderedType和函子制作结合使用,以创建模块,但我不知所措我搞清楚签名如何融入地图模块。 S签名是否是Make的已创建模块的通用签名?

回答

3

是的,S是Map.Make函数的输出类型。换句话说,当你将Map.Make应用到一个有序类型时,你得到一个S类型的模块,其中S.key是有序类型。所以,S本质上是地图的类型,除了需要通过应用Map.Make来填写关键类型之外。