2010-12-17 154 views
5

是否有任何種類的關鍵字(如this)來引用當前模塊?例如,我應該在這裏輸入什麼內容:參考OCaml中的當前模塊

module Test: Test_Type = 
struct 

    module N = Test_Outside(___);; 

end;; 

其中Test_Outside是另一個由Test_Type參數化的模塊。

回答

5

不,沒有,但它很奇怪,你需要。

你可能會用遞歸模塊(對基本語言的擴展)做奇怪的技巧,但很可能問題在於你制定事物的方式,而實際上你不需要這種自引用。

manual for recursive modules

以我的經驗,去遞歸路線會一直到最後一個問題。您應該花時間簡化您的設計並使用更多分層的方法來打破任何依賴性循環。例如,在這裏你要在測試中定義N,同時指向測試。但是,Test_Outside模塊是否需要使用N知道N和Test的其他部分,還是僅使用Test的「基本」定義,即「N之前」?您可以使用兩個獨立的「測試」模塊,第二個可以擴展第一個:

module Test_Outside(Test : Small_Test_Type) = struct ... end 

module InnerTest : Small_Test_Type = struct ... end 

module Test : Test_type = struct 
    include InnerTest 
    module N = Test_Outside(InnerTest) 
    ... 
end