17

私は継続渡しスタイル、特に関数が別の関数を最終引数として受け取り、その関数への非同期呼び出しを作成し、戻り値をこの 2 番目の関数に渡す、javascript で実装された非同期バージョンについて学習してきました。

ただし、継続渡しがパイプ (UNIX コマンドライン パイプのように) またはストリームを再作成する以上のことを行う方法がよくわかりません。

replace('somestring','somepattern', filter(str, console.log));

echo 'somestring' | replace 'somepattern' | filter | console.log

配管がはるかにきれいであることを除いて。パイプを使用すると、データが渡され、同時に実行が受信プログラムに渡されることは明らかです。実際、パイピングでは、データのストリームがパイプを通過し続けることができると期待していますが、CPS ではシリアルプロセスを期待しています。

完全なハンドオーバーとリターンではなく、通信オブジェクトと更新メソッドがデータとともに渡された場合、CPS が継続的なパイピングに拡張される可能性があることは、おそらく想像できるでしょう。

何か不足していますか?CPS は何か重要な点で違う (優れている?) ことはありますか?

明確にするために、単純なコールバックだけでなく、ある関数が別の関数に実行を渡す継続渡しを意味します。CPS は、関数の戻り値を別の関数に渡してから終了することを暗示しているようです。

4

2 に答える 2