所以我有以下代码(做那个教程的练习 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 是第一个元素时,将数字相乘并提前中止)。