Как объявить круговые зависимые абстрактные классы в F#

Рассмотрим два абстрактных класса 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

. Итак, как мне объявить круговые абстрактные классы?

5
задан qehgt 6 May 2012 в 12:07
поделиться