2015-05-01 29 views
2

我正在OCaml中的一個項目上工作,但編譯時遇到問題。我有一個「未綁定類型構造函數Door.position」。我用makefile編譯。 door.mli:不受限制的類型構造函數OCaml具有不同的文件

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;; 

我不知道哪裏出了問題。

+0

[OCaml中奇怪的模塊加載問題]的可能的重複(http://stackoverflow.com/questions/14876228/strange-module-loading-issue-in-ocaml) – Virgile

回答

2

在OCaml中,所有放在文件foo.ml(或foo.mli)中的代碼都隱式地打包到模塊Foo中。在你的情況下,如果你有door.mli包含模塊名爲Door,這意味着,從外部它只能以Door.Door訪問,即你需要它的文件名。

總之,這意味着,在您的mli文件中,您不需要編寫module Door : sig,因爲它已經隱含在那裏。只需寫下你的簽名。

相關問題