所以,當你定義模塊的結構,它可以延長另一個模塊關閉它:擴展遞歸模塊
module Base = struct
type t = Name of string
end
module Child = struct
include Base
end
Child.Name "test"
(* - : Child.t = Child.Name "test" *)
然而,隨着recursive modules using recursive signatures工作時,我遇到問題時,我嘗試延長模塊:
module rec Base : sig
type t = | Name of string
end = Base
and Child : sig
include Base
end = Child
當我這樣做,我得到一個錯誤說:
Error: Unbound module type Base
在使用此遞歸模塊技巧時,您不能擴展模塊嗎?我誤會了什麼或做錯了什麼?
我想補充一點,遠離遞歸模塊是個好主意。 –
@ÉtienneMillon怎麼回事?你有什麼文章可以把我和這件事聯繫起來嗎? –
這被標記爲實驗性的,並且受到手冊中的重大更改的影響,類型推斷被降級,您不能將它們放在單獨的文件中。我認爲過去有健全的錯誤。打破遞歸或者在類型和值之間移動它幾乎總是最好的解決方案。 –