2013-04-30 74 views
1

我正在學習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: 錯誤:未綁定模塊案例

你有想法嗎?

謝謝你

回答

2

你有兩個相互遞歸的模塊,這總是很棘手。讓他們工作的一種方法是使用module rec A ... and B ...在同一個文件中定義它們。

但是,您也有問題,您的類型是循環的。定義:

type t = bool -> Case.u -> t 

通常不被OCaml接受。您可以通過在編譯器或解釋器命令行上指定-rectypes來接受它。

我擔心你會發現這些結構很難合作。他們難以定義的原因是他們通常不是你想要的。如果可能的話,你可以嘗試從更簡單的類型開始。

+0

THX你的答案:)我改變了我的代碼 – helock 2013-05-01 18:48:12

1

我的建議是:讓那些兩類出door.mlcase.ml,使DoorCase取決於一個共同的Types模塊上:

type door = Door of bool -> case -> door 
and case = Case of bool -> door -> case