2014-02-22 75 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來填寫關鍵類型之外。