OCaml (メディエーター パターン) で 2 つのクラス間の相互バインディングを達成しようとしていますが、コンパイル時にエラーが発生します。
class virtual ['mediator] colleague mIn = object
val m = mIn
method virtual getmediator : 'mediator
end;;
class concreteColleague mIn = object inherit colleague
method getmediator = m
end;;
(* Some other classes here *)
class mediator = object (self)
val mutable myColleague = (None:colleague option)
initializer
myColleague <- Some (new concreteColleague self)
end;;
エラー: クラス コンストラクターの同僚は 1 つの型引数を予期していますが、ここでは 0 個の型引数に適用されます。
クラス定義の ['foo] 構文に精通しているとは言えませんが、メディエーターがすべての同僚と各同僚への参照を保持できるようにするために、(無駄に) それに頼ってきました。ソースコードでのクラスの定義の重要性を克服しようとしながら、それぞれのメディエーター。同僚がメディエーターへの参照を保持できるようにするにはどうすればよいですか?