小编Ily*_*kov的帖子

scala 2.10.0中更高级别类型的奇怪错误(适用于scala 2.9.2)

此代码使用Scala 2.9.2编译:

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(ps)
}
Run Code Online (Sandbox Code Playgroud)

但是使用Scala 2.10.0它不会编译时出现以下错误(启用了更高级的语言功能):

[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)
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?Scala 2.10中高等级类型的变化是什么?

PS如果我显式传递类型参数,那么此代码编译:

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: …
Run Code Online (Sandbox Code Playgroud)

scala scala-2.10

6
推荐指数
1
解决办法
138
查看次数

标签 统计

scala ×1

scala-2.10 ×1