在OCaml中使用模块包括

6
在OCaml 3.11中,我想使用include指令“扩展”现有模块,如下所示:
module MyString = struct
  include String
  let trim s = ...
end

没问题。但现在我想明确地公开这个模块的类型(即在一个.mli文件中)。我想要像这样的东西:
module MyString : sig
  include String
  val trim : string -> string
end

但是,在这里使用的包含语法是不正确的,因为String是指模块,而不是模块类型(编译器确实会出错)。我应该如何引用String的模块类型(而无需在sig表达式中明确写出)?
谢谢!
1个回答

5

OCaml 3.12将会有一个类似于module type of M的结构,我相信这可以解决你的问题。同时,你可以使用ocamlc -i命令让编译器生成冗长的签名。很抱歉,但我认为这是在3.11版本中能做到的最好的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接