我需要在某些代码中使用带有特征和结构类型作为类型参数约束的一些递归结构类型。它工作得很好,但后来我了解到 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