問題タブ [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 投票する
4 に答える
3401 参照

scala - ジェネレーター/ブロックからイテレーター/ストリームへの変換

基本的に私はこれを変換したい:

ストリームへ(dataToStreamは、この変換を行う架空の関数です):

この問題は継続することで解決できると思います。

ありがとう、Dawid

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

lisp - call-with-current-continuationは、ラムダとクロージャでのみ実装できますか?

call/ccラムダとクロージャだけで実装できるかどうか誰かが知っていますか?

プログラムのフローを(例外のように)中断するようですcall/ccが、ラムダとクロージャはそれを行うことができません。call/ccしたがって、ラムダとクロージャを介して実装することはできないと思います。

他にアイデアはありますか?

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

ruby - Ruby における Scheme の dynamic-wind に相当するもの

Ruby には継続があります... Schemedynamic-windのような構造はありますか?

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

tree - SML の成功継続を使用して、f を満たす BST のすべての要素を見つける

やるべき課題があり、1 つの質問のやり方がわかりません。これが私がしなければならないことです:

プロパティ p を満たすツリー T のすべての要素を収集して返す関数を作成します。ツリーを順番にトラバースします。成功継続を使用して、f を満たす BST 内のすべての要素を検索します。

私は次のことをしました:

なぜ機能しないのか理解できません...

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

scala - Scalaの継続のための使用

人々はScalaで大小の規模で継続をどのように使用していますか?

Scala標準ライブラリの一部はCPSで書かれていますか?

継続を使用することで、パフォーマンスに大きなペナルティはありますか?

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

python - サンドボックス化されたスタックレスPython?

非常に複雑なワークフローを記述するためのスクリプト言語が必要です。

  • これらのワークフローは、ユーザー入力が必要な場合は常に一時停止し、入力後に再開する必要があります(数か月後になる可能性があります)。Stacklessからのシリアル化可能な継続が適しているようです。

  • ユーザーは、ワークフローを自分で編集できる必要もあります。シリアル化された継続が基になるコードの変更をどのように処理するかはわかりません。継続と一緒にGitバージョンのハッシュを保存し、状態が不要なチェックポイントで継続を「アップグレード」する必要があるかもしれないと思います。

  • 読みやすさが非常に優先され、動的な機能が重要であるため、Python構文を好みます。しかし、私は提案を受け入れています。

  • 最終的には、基礎となるコードを操作するビジュアルフローチャートエディターを作成する予定です。

StacklessとPyPyを詳しく調べました。Stacklessはサンドボックス化の約束を提供していないようですが、PyPyはスタックレスとサンドボックス化の両方を提供しているようですが、両方を同時に持っているという言及は見つかりません。

解決策はありますか?私を良い解決策に導くことができる専門家がそこにいるなら、私はペイパルアカウントを持っていて、それを喜んで使用します。

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

scope - 奇妙な場所でスキームの継続が再起動する

アップデート:

したがって、問題はジェネレーターにあるようであり、必ずしも next-token および lookahead 関数にあるとは限りません。set!s が発生している場所に表示呼び出しを追加したところ、(generate-token) が 2 回目に呼び出された後、最初に呼び出された場所から実行が再開されることが問題であることがわかりました。

プログラムの完全なコードは次のとおりです (参照用に元の投稿を以下に残しました)。

以下の元の投稿の最初の例に従って、次のトークンと先読み呼び出しを実行すると、次の結果が得られます。

なぜこのように振る舞うかについては途方に暮れていますが、私は継続に不慣れであり、おそらくその影響を完全には理解していないことを認めます。いつものように、どんな助けでも大歓迎です。

ありがとう。

元の投稿は次のとおりです。


テキスト ファイルを解析し、一度に 1 つのトークンを文字列として返すジェネレータを作成しました。したがって、次を含むファイルがある場合

(generate-token) を連続して呼び出すと、それぞれ「these」「are」「my」... が返されます。これは機能しているように見えますが、これはより大きな割り当てのパーサーの一部として書いたものです。ジェネレーターは順調に動作しているようですが、トークンのストリームを解析するために LR(1) パーサーを構築しているため、先読みを実行できる必要があります。そのために、次のプログラムを作成しました。

ただし、これらは期待どおりに機能しません。スキーム (これは drRacket で記述されていますが、#lang r5rs を使用しています) はオブジェクトを値で渡すという印象を受けています。 :

別のフローでは、(先読み) が最初に呼び出された場合、正しく動作します。

何が起こっているのかについて手がかりがあれば、どんな洞察も大歓迎です。開示: これは学校の課題ですが、私に代わってやるように頼んでいるわけではありません >.>.

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

scala - scala区切りの継続入力

ここに含まれる正確な入力規則/意味をまだ解明中です。

ほとんどすべての単純な例がそうであるように、例の型が「十分に単純」で「うまく収まる」場合は簡単/簡単に思えますが、タイピングと比較すると、(少なくとも私にとっては)より興味深い/困難になります。 tiark rompf によって与えられた:

したがって、の結果は、tiark の論文で指定された map の定義に応じ[|e|].map( (x: A) => {[|r|]} )た型になります。Shift[U,B,C]

ここで、U は必ずしも B と同じではありません。

これまでのところ、tiark の論文の map の定義で指定されている U <: B のようなものがなくても、U が B と異なることが許される理由がわかりません。

ここでそれぞれ何が理解できていないのですか?

ヒント/アイデアはありますか?

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

multithreading - スキームのスレッドと継続の間の相互作用の情報と例?

私はさまざまなスキームの実装 (Gambit、Gauche、Chicken) で SRFI 18 を使用してきましたが、スレッド内で継続を使用するときに発生する可能性のある問題に関する説明/チュートリアル/情報の場所を知りたいですか? スレッドが別のスレッドによってキャプチャされた継続を呼び出すとどうなるかなど、多くの問題があると思います-内部または外部dynamic-windなど。

単なる仕様 (SRFI 自体のような) ではなく、ヒントやコード例、通常のプログラムでこれらの問題がどのように処理されるかの例です。

どこかにそんなのあるの?

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

functional-programming - CPS を書き換えるためのマクロはありますか?

たとえば、2 つの非同期メソッドがあります。

しかし、私は似たようなものを書きたい