使用模块包含在OCaml中

时间:2010-05-05 21:00:06

标签: module types expression ocaml

在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表达式中明确地写出来)?

谢谢!

1 个答案:

答案 0 :(得分:5)

OCaml 3.12将有一个类似module type of M的构造,我相信它可以解决您的问题。同时,您可以让编译器使用ocamlc -i生成冗长的签名。对不起,但我认为这是你用3.11做的最好的。