再帰的なモジュールを定義することは可能ですが、再帰的な署名を定義する方法は誰にも分かりますか?たとえば、私は実現したいと思います:モジュールの再帰的な署名を定義する
module type AAA = sig
module Bbb : BBB
type 'a t
val f : 'a Bbb.t -> 'a t
end
module type BBB = sig
module Aaa : AAA
type 'a t
val g : 'a Aaa.t -> 'a t
end
助けてもらえますか?私の知る限り、
module rec Aaa : sig
type 'a t
val f : 'a Bbb.t -> 'a t
end = Aaa
and Bbb : sig
type 'a t
val g : 'a Aaa.t -> 'a t
end = Bbb
おかげでそれを言及しなかった...'、例えば、署名に名前を与えたいです答え... "最も近い解決策は、"再帰的なビット "を制限することです==>あなたのソリューションの限界についてもっと詳しく教えてください。 – SoftTimur
これは、各署名の自己完結したサブセットを一種の前方宣言として分離できる必要があるため、署名間で任意の再帰を表現することはできません。また、これらのサブセットをそれぞれ2箇所で繰り返していますが、名前を付けることと 'include 'することで助けてくれるはずです。私の返信では、関連するサブセット(タイプt)が十分に小さいので、私はそれをするのは気にしませんでした。 –