問題タブ [delimited-continuations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
24411 参照

scala - Scala 継続とは何ですか? なぜそれを使用するのですか?

Programming in Scalaを終えたばかりで、Scala 2.7 と 2.8 の間の変更点を調べています。最も重要と思われるのは継続プラグインですが、それが何に役立つのか、どのように機能するのかわかりません。非同期 I/O に適していることがわかりましたが、その理由はわかりませんでした。このテーマに関するより人気のあるリソースのいくつかは次のとおりです。

そして、スタックオーバーフローに関するこの質問:

残念ながら、これらの参考文献はいずれも、継続の目的やシフト/リセット関数の役割を定義しようとはしていません。リンクされた記事の例がどのように機能するか (またはそれらが何をするか) を推測することはできませんでした。3番目の記事のこの単純なものでさえ:

なぜ結果は 8 なのですか? それはおそらく私が始めるのに役立つでしょう。

0 投票する
1 に答える
342 参照

scala - ネストされた CPS「リセット」

Scala 2.8 の CPS コンパイラ プラグインを使用すると、2 つの魔法のコントロールresetshift. リセットは継続を区切り、シフトは継続をキャプチャします。

ネストされたリセットを一種の「フォーク」として使用して、NIO で CPS を使用する例があります...? リセットを入れ子にする目的がよくわかりません。どのような影響がありますか?

0 投票する
2 に答える
1993 参照

scala - 区切られた継続プリミティブが「シフト」および「リセット」と名付けられたのはなぜですか?

私は(一般的に)何shiftreset意味するかを理解していると思います。しかし、なぜ彼らがそのように名付けられたのか分かりませんか? 区切り継続プリミティブは、英語の「シフト」および「リセット」単語と何の関係がshiftありますか?reset

0 投票する
2 に答える
1860 参照

scala - 実行時のScala区切り継続エラー

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

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

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

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

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

0 投票する
2 に答える
173 参照

scala - シフトがリセット ブロックのどこにあるかは重要ですか?

reset単一のブロックがあるとしますshift:

shift「do smth. 2」または「do smth. 3」の後に、結果を変更せずに配置するのは正しいrですか? ブロック のどこにshift立っているかは問題ではないというのは正しいですか。reset

0 投票する
3 に答える
975 参照

haskell - Haskell で Web 開発を行うために区切られた継続を使用している人はいますか?

Haskell 開発、特に Web 開発に区切られた継続を使用している人はいますか? このトピックは魅力的だと思います。これまで勉強してきたものよりも、もっとアクセスしやすいものが必要です。

これまでに見つけたリソースは次のとおりです。

ありがとう!

-ディーチ

0 投票する
2 に答える
1497 参照

scala - Scala:区切られた継続の説明-ではない

継続の概念に興味を持って、私はwikiや投稿を読み始め、この「単純な」例にたどり着きました。

Scalaの知識がなければ、私はここで完全に迷子になり、8がどのように出てくるのか理解できませんでした。

以下は、私が意味を理解しようとしたが失敗した方法です。誰か簡単な説明をお願いします。ええ、Scalaの文法書はありますが、それらは厚すぎます。私は、Scalaのマスター言語よりも、区切られた継続の概念を理解することに興味があります...

  • (Int=>Int)

    C#デリゲートのように見えます。入力はInt、出力はIntです。

  • k: (Int=>Int) => k(7)

    私はここで迷子になっています...kとは何ですか、そして(Int => Int)=> k(7)とは何ですか?

  • shift { k: (Int=>Int) => k(7) } + 1

    さらに失われた...

  • reset { ...; shift { k: (Int=>Int) => k(7) } + 1 }

    さらにますます失われます...

0 投票する
1 に答える
277 参照

functional-programming - マルチプロンプトで区切られた継続のAPIを理解する

マルチプロンプトで区切られた継続のためのAPIは、OCamlのDelimited Control、Abstractly and ConcretelySystemDescriptionの論文で説明されています。

私の質問はのタイプに関するものですpush_subcont : ('a,'b) subcont -> (unit -> 'a) -> 'b。なぜこのタイプではないの('a,'b) subcont -> 'a -> 'bですか?さらに、なぜsubcontsに別のタイプがあるのですか?なぜ単純ではないのです('a,'b) subcont = 'a -> 'bか?オレグは物事を可能な限りエレガントにするので(しかしよりエレガントではない)、それには正当な理由があるとほぼ確信しています。

ありがとう!

0 投票する
1 に答える
1055 参照

functional-programming - シフト/リセットをdelimccに変換するには?

私は Oleg と Asai の「for dummies」論文 (http://pllab.is.ocha.ac.jp/~asai/cw2011tutorial/main-e.pdf) を研究していますが、この論文では代わりにシフト/リセット形式を使用しています。 Oleg の delimcc で利用可能なプロンプトのものの。だから私はいくつかの質問があります:

そもそもプロンプトとは?shiftそして、なぜ他の機能に受け継がれるのでしょうか。subcont とは何かを知っていればよいのですが、この記事を読み進めたいだけなので、スキップしてもかまいません。shiftまた、とと の違いは何ですか。論文ではshift0どのように対応していますか。shift

また、resetdelimccには何がありますか? 私の直感はそれを私に伝えておりnew_promptpush_promptどういうわけか に対応していresetます。しかし、ここでも説明が必要です。

編集: 論文の簡単な例を翻訳することができ、私の直感は正しいことがわかりました。ただし、違いの本当の説明と、delimcc がそうである理由を知りたいです。誰かが興味を持っている場合に備えて、ここに両方の​​バージョンがあります

紙:

デリムク:

0 投票する
3 に答える
1020 参照

scala - List.mapを区切られた継続で機能させるには、どのタイプのパラメーターを使用する必要がありますか?

私は基本的に、ScalaAPIページで区切られた継続の例に従っています。以下のコードは正常に機能します。

ただし、次のように変更するgoと、次のようになります。

このエラーが発生します:

2番目のタイプのパラメーターとして追加Anyしても役に立ちません。どのタイプを提供する必要があるかについて何か考えはありますか?