Hayır, yok, ama yapmanız gereken garip.
Sen özyinelemeli modülleriyle garip hileler (temel dil uzantısıdır) yapmak mümkün olabilir, ancak büyük olasılıkla sorun şeyler formüle şekilde olduğunu ve aslında bu tür öz-referansı gerekmez.
her halükarda sonunda bir sorun olduğunu özyinelemeli yol giderek, Tecrübelerime göre
manual for recursive modules
bakınız. Tasarımınızı basitleştirmek ve daha katmanlı bir yaklaşım kullanarak herhangi bir bağımlılık döngüsünü kırmak için zaman ayırmalısınız. Örneğin burada, N'nin Test'te tanımlanmasını ve aynı zamanda Test'e başvurmasını istiyorsunuz. Ancak Test_Outside modülünün N'yi ve N'yi kullanarak Test'in diğer bölümlerini bilmesi gerekiyor mu, yoksa sadece "N'den önce" olan Test'in "temel" tanımlarını mı kullanıyor? İki ayrı "Test" modülünü kullanabilirsiniz, ikincisi ise ilk:
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