在OCaml 3.11中,我想使用include指令“扩展”现有模块,如下所示:
module MyString = struct
include String
let trim s = ...
end
没问题。但现在我想明确地公开这个模块的类型(即在.mli文件中)。我想要这样的东西:
module MyString : sig
include String
val trim : string -> string
end
但是include语法不正确,因为String指的是模块,而不是模块类型(编译器确实是barf)。我如何在这里引用String的模块类型(没有在sig表达式中明确地写出来)?
谢谢!
答案 0 :(得分:5)
OCaml 3.12将有一个类似module type of M
的构造,我相信它可以解决您的问题。同时,您可以让编译器使用ocamlc -i
生成冗长的签名。对不起,但我认为这是你用3.11做的最好的。