2013-03-07 43 views
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) 
} 
+0

看起來像類型推斷中的錯誤。看起來像unzip1中的A被推斷爲具有非常奇怪的類型(A,B)。 – 2013-03-07 10:14:38

回答