だから私は次のコードを持っています(そのチュートリアルの演習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 が最初の要素である場合、数値を乗算し、早期に中止します)。