具有不同文件的未绑定类型构造函数 OCaml



我正在用OCaml做一个项目,但是我在编译时遇到了问题。我有一个"未绑定类型构造函数 Door.position"。我用一个生成文件编译。门.mli :

module Door : sig
  type position
  type state
  type door
  val create  : position -> state -> door
  val getState    : door -> state
  val setState    : door -> state -> door
  val getPosition : door -> position
  val setPosition : door -> position -> door
  val isOpen      : door -> bool
end;;

该文件包含错误 case.mli:

module Case : sig
  type case
  val create  : int -> int -> case
  val getDoor : case -> Door.position -> Door.door
end;;

我不知道问题出在哪里。

在OCaml中,放入文件foo.ml(或foo.mli)中的所有代码都隐式打包到模块Foo中。在您的情况下,如果您有包含名为 Door 的模块的door.mli,这意味着从外部只能作为Door.Door访问它,即您需要它以文件名限定。

简而言之,这意味着,在您的mli文件中,您无需编写 module Door : sig ,因为它已经隐式存在。只需写下您的签名。

最新更新