2010-12-17 5 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을 사용하여 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