2010-12-17 13 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で定義し、同時にTestを参照します。しかし、Test_Outsideモジュールは、Nを使ってTestのNや他の部分について知る必要がありますか、Testの "基本"定義、つまり "Nより前"の定義のみを使用していますか? 2つの別々の「テスト」モジュールを使用することができます。第2のモジュールは最初に拡張します。

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 
関連する問題