为什么我在Scala continuation上得到'cps-transformed-transformedly'消息

时间:2013-04-03 07:30:07

标签: scala continuations

所以我有以下代码(执行tutorial的练习4):

import scala.util.continuations._
object Main {
  def times(lst: List[Int]): Int@cps[Int] = lst match {
    case Nil => 1
    case 0 :: rest => shift{(_: Int=>Int) => 0 } * times(rest)
    case first :: rest => first * times(rest)
  }
  def main(args: Array[String]) {
    println(reset{times(List(0 to 1000: _*))})
  }
}

我正在使用scala 2.10.0进行编译,并收到以下警告:

CWSO.scala:3: warning: expression matchEnd9(x: Int){
  x
} is cps-transformed unexpectedly
  def times(lst: List[Int]): Int@cps[Int] = lst match {
                                            ^
one warning found

我编写代码的方式有问题吗?我该怎么做以避免警告?代码似乎正在做正确的事情(当0是第一个元素时,早期将数字和中止相乘)。

1 个答案:

答案 0 :(得分:1)

这闻起来像一个臭虫,据报道:https://issues.scala-lang.org/browse/SI-6817