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

jquery - 継続渡しスタイルのプログラミングはスタックオーバーフローを起こしやすいですか

jQueryの効果に関するこの質問に答えて、私はへのcallback引数を使用することを考えました.fadeIn( 500, my_function )

原則として、これは実行可能なアイデアですが、コールバックが再帰を許可されている場合、私には手がかりがありません(また、jQueryドキュメント:()もありません。

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

scheme - スキームの「スタック」。何が特別なのですか?

Scheme について読んだとき、私はこの声明に出くわしました。

「活性化スタックに相当するスキームは、実際には部分的な継続 (中断レコード) のチェーンです。」

これが実際に何を意味するのか、私は少し混乱しています。スキーム スタックと、たとえば C のスタックとの違いは何ですか?

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

haskell - Haskellの後藤:継続モナドの使用によるこの一見非常識な効果を誰かが説明できますか?

このスレッド(Control.Monad.Cont fun、2005)から、Tomasz Zielonkaが関数を導入しました(ThomasJägerによって明確で素晴らしい方法でコメントされています)。Tomaszは、callCC本体の引数(関数)を受け取り、次の2つの定義を使用して後で使用できるように返します。

それらはHaskellwikiでも言及されています。それらを使用すると、haskellのgotoセマンティクスに似たものになります。これは本当にクールに見えます。

これにより、0〜10の数値が出力されます。

ここに興味深い点があります。これをライターモナドと一緒に使って、ある問題を解決しました。私のコードは次のようになります。

このコードをコンパイルして実行すると、出力は次のようになります。

この例の深遠な暗闇のどこかで、0から3までの数字が飲み込まれています。

現在、「Real World Haskell」では、オサリバン、ゲルゼン、スチュワートの各州が

「モナド変換子の積み重ねは、関数の作成に似ています。関数を適用する順序を変更して、異なる結果が得られても、驚くことはありません。したがって、モナド変換子も同様です。」(Real World Haskell、2008、P.442)

上記のトランスを交換するというアイデアを思いつきました。

ただし、Control.Monad.ContにMonadWriterのインスタンス定義がないため、これはコンパイルされません(これが、最近この質問をした理由です)。

リッスンとパスを未定義のままにしてインスタンスを追加します。

それらの行を追加し、コンパイルして実行します。すべての数字が印刷されます。

前の例で何が起こったのですか?

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

serialization - 非同期ロジックを簡素化するための Lua コルーチン/継続シリアライゼーションの実際の使用法は?

LuaのPluto ライブラリは、Lua コルーチンをシリアライズできると主張しています。これは、非同期プログラミングを同期スタイルで書き込み可能にするための重要な機能である「シリアル化可能な継続」を意味すると解釈します。

たとえば、名前付きのエントリ ポイントを必要とする代わりに、ワークフローを直線的に表現できます。

それ以外の

以前のスタイルに変換された if ステートメントは悪くありませんが、ローカル変数、ループ、ネストされた関数呼び出しなどが含まれると、事態は非常に複雑になります。

ここで、シリアライズ可能な継続が非常に重要になります。

シリアル化された継続は、JavaFlow、Cocoon (Rhink)、Seaside、PLT スキーム、SICS で使用され、ビジネス ワークフロー、医療診断、および (私の場合) テキスト アドベンチャー ゲームの処理に最適です。

Lua と Pluto がこのように機能を活用し、非同期環境でロジックを簡素化するために継続を使用する例 (オープン ソースを希望します!) はありますか?

0 投票する
5 に答える
442 参照

scheme - Schemeでcall/ccに頭を悩ませているようには見えない

誰かがそれがどのように機能するかについての良いガイドを持っていますか?視覚的な補助機能を備えたものがあればいいのですが、私が出会ったすべてのガイドは、私がそれを新たに取り入れることが必要なのと同じことを言っているようです。

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

scala - Scala:Any型の継続を宣言するときのコンパイルエラー=> Nothing

このコードはコンパイルエラーを出します:

エラーメッセージ:

しかし、このコードは期待どおりに機能します。

問題は、ScalaコンパイラがAny =>Nothing型の継続を嫌う理由です

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

programming-languages - 継続がスタックに加えてヒープを復元するプログラミング言語はありますか?

継続のサポートに精通している言語 (Scheme と Ruby) は、継続が作成されたときのスタック状態と命令ポインターを復元します。継続を呼び出すとヒープも復元されるプログラミング言語があるかどうか疑問に思っていますか?

[編集:] 私が受け入れた Marcelo の回答に加えて、私が説明する「ストア」の概念を効果的にサポートする ML の拡張機能も見つけました。Greg Morrisett による論文Refining First Class Storesを参照してください。

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

functional-programming - 継続してPCを記録し、状態を登録しますか?

現在、関数型言語で継続を実験しているとき、継続は現在のプログラムカウンターとレジスタファイルを記録し、継続が返されると、PCと登録ファイルは記録された値に復元されると理解しています。 。

したがって、Mightのブログ投稿からの次のばかげた例では、

理解が正しいかわかりません。そうでないと思われる場合は訂正してください。

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

iterator - このスキーム リスト イテレータは call-with-current-continuation をどのように使用しますか?

私はこのコードを読もうとしています:

call-with-current-continuationこの例でどのように機能するかを誰か説明できますか?

ありがとう