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

时间:2015-05-01 17:28:47

标签: ocaml

我正在研究OCaml中的一个项目但是编译时遇到了问题。我有一个"未绑定的类型构造函数Door.position"。我用makefile编译。 door.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;;

我不知道问题出在哪里。

1 个答案:

答案 0 :(得分:3)

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

简而言之,这意味着,在您的mli文件中,您不需要编写module Door : sig,因为它已隐含在那里。只需写下你的签名。