6
此代码编译使用Scala 2.9.2(使用Scala 2.9.2作品)出现以下错误(启用高级语言功能):在斯卡拉2.10.0更高kinded种奇怪的错误
[info] Compiling 1 Scala source to /home/klyuchnikov/code/hk/target/scala-2.10/classes...
[error] /home/klyuchnikov/code/hk/src/main/scala/HK.scala:6: type mismatch;
[error] found : HK.this.Rep[List[(A, B(in method doUnzip1))]]
[error] required: HK.this.Rep[List[((A, B(in method doUnzip1)), B(in method unzip1))]]
[error] def doUnzip1[A, B](ps: Rep[List[(A, B)]]) = unzip1(ps)
这里会发生什么? Scala 2.10中更高端类型的变化是什么?
P.S.如果我通过类型参数明确,那么这段代码编译:
trait HK {
type Rep[A]
def unzip1[A, B, C[_]](ps: Rep[C[(A, B)]]): (Rep[C[A]], Rep[C[B]])
def doUnzip1[A, B](ps: Rep[List[(A, B)]]) = unzip1[A, B, List](ps)
}
看起来像类型推断中的错误。看起来像unzip1中的A被推断为具有非常奇怪的类型(A,B)。 – 2013-03-07 10:14:38