Мне нужен рекурсивный структурный тип в некотором фрагменте кода с использованием признаков и структурного типа в качестве ограничения параметра типа. Он работал нормально, но позже я узнал, что Scala не поддерживает рекурсивные структурные типы.
Так может кто-нибудь объяснить мне, почему это прекрасно работает:
scala> trait Test[M[A] <: { def map[B](f: A => B) : M[B] } ] {}
defined trait Test
и это не:
scala> def test[M[A] <: { def map[B](f: A => B) : M[B] } ] = null
<console>:5: error: illegal cyclic reference involving type M
def test[M[A] <: { def map[B](f: A => B) : M[B] } ] = null