Ocaml未绑定模块

时间:2013-04-30 23:18:01

标签: module compilation compiler-errors ocaml

我正在学习Ocaml语言但是当我想编译它时我的模块有问题。 所以,我有一个名为Door的模块和另一个名为Case的模块。在每一个中,我有一个与另一个模块的类型参数:

Door.mli
type t = bool -> Case.u -> t

Case.mli
type u = bool -> Door.t -> u

当我想编译时,我有这个错误: 文件“door.mli”,第14行,字符23-29: 错误:未绑定模块案例

你有个主意吗?

谢谢你

2 个答案:

答案 0 :(得分:2)

你有两个相互递归的模块,这总是很棘手。让它们工作的一种方法是使用module rec A ... and B ...在同一个文件中定义它们。

但是,您还遇到了类型是循环的问题。定义:

type t = bool -> Case.u -> t
OCaml通常也不接受

。您可以通过在编译器或解释器命令行上指定-rectypes来接受它。

我担心你会发现这些结构难以使用。他们难以定义的原因是他们通常不是你想要的。如果可能的话,您可以尝试从更简单的类型开始。

答案 1 :(得分:1)

我的建议:从door.mlcase.ml中获取这两种类型,并使DoorCase依赖于常见的Types模块:< / p>

type door = Door of bool -> case -> door
and case = Case of bool -> door -> case