6

ここでは Scala 初心者ですが、Eclipse 3.6.2 とScala IDE 2.0.0-beta4 (Scala 2.9.0.final を含む) をダウンロードしました。区切られた継続を試すために、新しい Scala プロジェクトを作成します。

package delimCCTests

import scala.util.continuations._

object Test extends App {
  val result = reset {
    1 + shift { k: (Int => Int) => k(k(5)) } + 1
  }
  println(result)
}

これは正常にコンパイルされ、[Run as] -> [Scala application] をクリックすると、次の例外が発生します。

Exception in thread "main" java.lang.NoSuchMethodError: scala.util.continuations.package$.shift(Lscala/Function1;)Ljava/lang/Object;
    at delimCCTests.Test$$anonfun$1.apply$mcI$sp(DelimCCTests.scala:7)
    at delimCCTests.Test$$anonfun$1.apply(DelimCCTests.scala:7)
    at delimCCTests.Test$$anonfun$1.apply(DelimCCTests.scala:7)
    at scala.util.continuations.package$.reset(package.scala:20)
    at delimCCTests.Test$delayedInit$body.apply(DelimCCTests.scala:6)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:60)
    at scala.App$$anonfun$main$1.apply(App.scala:60)
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
    at scala.collection.immutable.List.foreach(List.scala:45)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30)
    at scala.App$class.main(App.scala:60)
    at delimCCTests.Test$.main(DelimCCTests.scala:5)
    at delimCCTests.Test.main(DelimCCTests.scala)

私は何を間違っていますか?いくつかの構成がありませんか?

ところで、コンパイラが継続の型を推測したと思いましたか? この記事では以下を使用します。

val result = reset {
   1 + shift { k => k(k(5)) } + 1                   
}

しかし、これは私の環境ではコンパイルされません...

4

2 に答える 2

3

このエラーは、Scala CPS プラグインを追加していないことを意味します。これは標準アセンブリの一部ではありません (これまでのところ)。jarをクラスパスに配置し継続を有効にするために Scala を実行します。

$ scala -P:continuations:enable
于 2011-05-20T05:04:53.767 に答える
1

これは、Scala Compiler > Advanced セクションに CPS プラグイン クラスを追加し、スイッチを有効にすることで、Eclipse で解決できます。

継続スイッチの有効化 プラグインの追加とプラグイン パスの設定 Xpluginを含むディレクトリである必要がscala.tools.selectivecps.SelectiveCPSPluginありXpluginsdirますorg.scala-lang.plugins.scala-continuations-plugin.jar

于 2014-07-10T17:15:12.120 に答える