我正在學習Ocaml語言,但當我想編譯它們時,我的模塊出現問題。 所以,我有一個名爲Door的模塊和另一個名爲Case的模塊。到每一個,我與其他模塊類型paramater:Ocaml未綁定模塊
Door.mli
type t = bool -> Case.u -> t
Case.mli
type u = bool -> Door.t -> u
當我想編譯,我有這樣的錯誤: 文件「door.mli」 14行字符23-29: 錯誤:未綁定模塊案例
你有想法嗎?
謝謝你
我正在學習Ocaml語言,但當我想編譯它們時,我的模塊出現問題。 所以,我有一個名爲Door的模塊和另一個名爲Case的模塊。到每一個,我與其他模塊類型paramater:Ocaml未綁定模塊
Door.mli
type t = bool -> Case.u -> t
Case.mli
type u = bool -> Door.t -> u
當我想編譯,我有這樣的錯誤: 文件「door.mli」 14行字符23-29: 錯誤:未綁定模塊案例
你有想法嗎?
謝謝你
你有兩個相互遞歸的模塊,這總是很棘手。讓他們工作的一種方法是使用module rec A ... and B ...
在同一個文件中定義它們。
但是,您也有問題,您的類型是循環的。定義:
type t = bool -> Case.u -> t
通常不被OCaml接受。您可以通過在編譯器或解釋器命令行上指定-rectypes
來接受它。
我擔心你會發現這些結構很難合作。他們難以定義的原因是他們通常不是你想要的。如果可能的話,你可以嘗試從更簡單的類型開始。
我的建議是:讓那些兩類出door.ml
和case.ml
,使Door
和Case
取決於一個共同的Types
模塊上:
type door = Door of bool -> case -> door
and case = Case of bool -> door -> case
THX你的答案:)我改變了我的代碼 – helock 2013-05-01 18:48:12