Рассмотрим два абстрактных класса alpha и beta:
[<AbstractClass>]
type alpha () =
abstract member foo: beta->beta
[<AbstractClass>]
and beta () = //***
abstract member bar: alpha
Если я попытаюсь скомпилировать это, я получить ошибку, в строке, обозначенной ***:
error FS0010: Unexpected keyword 'and' in interaction
. И если я напишу :
[<AbstractClass>]
type alpha () =
abstract member foo: beta->beta
and beta () =
abstract member bar: alpha
, то я получу:
error FS0365: No implementation was given for 'abstract member beta.bar : alpha'
и подсказку, что я должен добавить атрибут AbstractClass
. Итак, как мне объявить круговые абстрактные классы?