2010-05-05 46 views
6

在OCaml的3.11,我想使用include指令 「擴展」 已有的模塊,像這樣:使用模塊包括OCaml中

module MyString = struct 
    include String 
    let trim s = ... 
end 

沒問題。但是現在我想明確地公開這個模塊的類型(即在.mli文件中)。我想是這樣的:

module MyString : sig 
    include String 
    val trim : string -> string 
end 

但包括語法不正確的,因爲字符串是指一個模塊,而不是一個模塊類型(以及編譯器確實做BARF)。我怎樣才能在這裏引用字符串的模塊類型(沒有在sig表達式中明確寫出)?

謝謝!

回答

5

OCaml 3.12將有一個像module type of M這樣的構造,我相信會解決您的問題。同時,您可以讓編譯器使用ocamlc -i生成冗長的簽名。對不起,但我認爲這是3.11所能做的最好的。