Почему я не могу создать F-ограниченный объект в Scala
Предположим, у меня есть:
trait A[AA <: A[AA]]
//or even just `
trait A[AA]
Это не работает:
scala> object AAA extends A[AAA.type]
<console>:8: error: illegal cyclic reference involving object AAA
object AAA extends A[AAA.type]
^
Но это работает:
scala> class AAA extends A[AAA]; object AAA extends AAA
defined class AAA
defined module AAA
Делать почти (не совсем) то же самое, и это работает. Какой-либо причине?
Постскриптум А также, что именноя могу сделать внутри такого объекта заставить цикл infinte внутри самого компилятора?