問題タブ [continuation-passing]
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.
scheme - CPS 変換後の管理用 redexes とは正確には何ですか?
スキームとCPS変換のコンテキストでは、管理用の正規表現(ラムダ) が正確に何であるかを判断するのに少し苦労しています。
- CPS 変換によって導入されるすべてのラムダ式
- CPS 変換によって導入されるラムダ式のみですが、「手動で」またはよりスマートな CPS コンバーターを介して変換を行った場合は記述しませんでした。
良ければ参考になれば幸いです。
scala - ネストされた CPS「リセット」
Scala 2.8 の CPS コンパイラ プラグインを使用すると、2 つの魔法のコントロールreset
とshift
. リセットは継続を区切り、シフトは継続をキャプチャします。
ネストされたリセットを一種の「フォーク」として使用して、NIO で CPS を使用する例があります...? リセットを入れ子にする目的がよくわかりません。どのような影響がありますか?
mapreduce - MapReduceは継続渡しスタイル(CPS)の1つの形式ですか?
タイトルが言うように。私はさらに別の言語オタク:継続渡しスタイルを読んでいて、MapReduceが継続渡しスタイル(別名CPS)の1つの形式として分類できるかどうか疑問に思っていました。
また、CPSが複数のコンピューターを利用して複雑な計算を実行するにはどうすればよいのか疑問に思っています。たぶん、CPSはアクターモデルでの作業を容易にします。
recursion - Ocaml 継続渡しスタイル
私は ocaml を初めて使用し、スタイル関数を渡す継続を記述しようとしていますが、k の追加の引数にどの値を渡す必要があるかについて非常に混乱しています
たとえば、リストのすべての要素が偶数の場合は true、それ以外の場合は false を返す再帰関数を作成できます。
そのように
CPSでは、関数を渡すために1つの引数を追加する必要があることを知っています
しかし、私はこのkをどのように扱うか、そしてこれがどのように正確に機能するのか見当がつかない
たとえば、この偶数関数の場合、環境は次のようになります
lisp - LISP プリミティブのみを使用してコルーチンを実装することは可能ですか?
まず、私は LISP 初心者です。
私が手に入れたいのは、協調的なマイクロスレッディング機能です。そして、これはコルーチンで得ることができます。私が知っているように、Scheme は継続を介してコルーチンをサポートしています。ただし、Scheme のすべての実装に継続性があるわけではありません。もしそうなら、LISP プリミティブのみで継続機能を追加できますか?
c# - c#5.0の新しい非同期機能をcall / ccでどのように実装できますか?
私はasync
c#5.0に含まれる新機能に関する新しい発表をフォローしています。私は、継続渡しスタイルと、新しいc#コンパイラがEric Lippertの投稿からのこのスニペットのようなコードに変換することについての基本的な理解を持っています:
一部の言語は、call-with-current-continuation(callcc
)を介してネイティブに継続を実装していることは知っていますが、それがどのように機能するのか、または正確に何をするのかはよくわかりません。
だからここに質問があります:アンダースらの場合。弾丸を噛み、/特殊なケースcallcc
の代わりにc#5.0で実装することにした場合、上記のスニペットはどのようになりますか?async
await
functional-programming - CPS を書き換えるためのマクロはありますか?
たとえば、2 つの非同期メソッドがあります。
しかし、私は似たようなものを書きたい
haskell - カレー言語のCPS
ラムダ計算やOcamlのようなカレー言語のCPSはどのように意味がありますか?技術的には、すべての関数に1つの引数があります。したがって、そのような言語の1つにCPSバージョンの加算があるとします。
そして、私たちはそれを次のように呼びます
これは、次と同じです。
末尾呼び出しではなく、実際には複雑にネストされた式である2つの呼び出しがすでに表示されてい(cps-add random-continuation)
ます。値、つまり数値を消費する関数を返し、次に別の数値を消費して両方の合計をに返す関数を返します。そのrandom-continuation
。ただし、各関数に引数を1つしか与えることができないため、これをCPSに再度変換するだけでは、この値の戻りを回避することはできません。継続と「実際の」議論のための余地を作るために、少なくとも2つ必要です。
それとも私は何かを完全に見逃していますか?
functional-programming - 継続渡しスタイル vs モナド
継続渡しスタイル (cps) とモナドの違いは何ですか。
scheme - スキームの継続渡しスタイル?
ウィキペディアでこのコードに出くわしました:
この記事では、そのコードは別のコードの継続渡しバージョンであると述べています。
しかし、私はかなり混乱しています。それはどのように機能するのでしょうか? ここで数値にラムダをどのように掛けますか?(* x x (lambda ...))