Ocaml 参考顶级文件中定义的模块类型

Ocaml 参考顶级文件中定义的模块类型,ocaml,Ocaml,在OCaml中,如果您的项目有一个名为code.ml的文件,您可以使用模块名代码在其他文件中引用它。我想知道您是否定义了一个.mli文件,是否可以用类似的方式引用它定义的签名。例如,如果您有一个名为wow.mli的文件,您可以有另一个带有声明的文件 module Func(St : Wow) = struct ... end 有没有办法做到这一点?这对我很有用: module Func(St: module type of Wow) = struct ... end 以下是我所做的详细说明:

在OCaml中,如果您的项目有一个名为code.ml的文件,您可以使用模块名代码在其他文件中引用它。我想知道您是否定义了一个.mli文件,是否可以用类似的方式引用它定义的签名。例如,如果您有一个名为wow.mli的文件,您可以有另一个带有声明的文件

module Func(St : Wow) = struct ... end
有没有办法做到这一点?

这对我很有用:

module Func(St: module type of Wow) = struct ... end
以下是我所做的详细说明:

$ cat wow.mli
val f : int -> int
$ cat m.ml
module Func (St: module type of Wow) = struct let f x = St.f x end
$ ocamlopt -c wow.mli
$ ocamlopt -c m.ml

如果我在另一个文件中使用“module-type-Func=module-type-of-Func”,它会声称它们的签名不匹配。(如果您需要帮助,我想您必须显示您的代码。)