是否有任何类型的关键字,例如this,参考当前模块?例如,我应该在这里加入什么:
module Test: Test_Type =
struct
module N = Test_Outside(___);;
end;;
Run Code Online (Sandbox Code Playgroud)
Test_Outside是Test_Type参数化的另一个模块.
不,没有,但你需要这很奇怪.
你可以用递归模块(基本语言的扩展)做一些奇怪的技巧,但很可能问题在于你制定事物的方式,而你实际上并不需要这样的自我引用.
请参阅手册中的递归模块
根据我的经验,走向递归路线最终总会成为一个问题.您应该花些时间来简化设计并通过使用更分层的方法来打破任何依赖周期.例如,在这里您希望在Test中定义N并同时引用Test.但确实在Test_Outside模块需要了解N和使用N个测试的其他部分呢,还是只,而"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
Run Code Online (Sandbox Code Playgroud)