Почему я не могу создать 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 внутри самого компилятора?

Ответы на вопрос(1)

Ваш ответ на вопрос