Я пытаюсь выполнить взаимную привязку между двумя классами в OCaml (а-ля шаблон посредника) и получаю сообщение об ошибке при компиляции.
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] в определении класса, но прибегал к нему (безрезультатно), пытаясь позволить посреднику сохранить ссылку на всех коллег и каждого коллегу в его соответствующий посредник, а также пытается преодолеть важность определения класса в исходном коде. Как мне разрешить коллегам сохранить ссылку на своего посредника?