所以我有以下代码(执行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是第一个元素时,早期将数字和中止相乘)。