0

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

4

1 に答える 1