加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:46:42 所属栏目:安全 来源:网络整理
导读:此代码使用 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)} 但是使用Scala 2.10.0它不会编译时出现以下错误(启用了更高级的语言功能):
此代码使用 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)
}

但是使用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)]]) = unzip1(ps)

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

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

trait HK {
  type Rep[A]
  def unzip1[A,B)]]) = unzip1[A,List](ps)
}

解决方法

看起来像一个bug,很可能是:
https://issues.scala-lang.org/browse/SI-5330

它应该在Scala 2.10.1中修复,如果你等不及,你可以尝试发布候选版本:
http://www.scala-lang.org/2.10.1-RC3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读