我正在用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
,因为它已经隐式存在。只需写下您的签名。