Clojure のcore.async ライブラリには、ブロックをラップしてブロック IO を処理するチャネルを作成するステート マシンを作成するマクロがあります。go
これは、 C#とGo-lang の goroutinesでモデリングし ているようです。async
The Seasoned Schemerでは、継続を渡すためのテクニックについて説明しています。(これは call/cc に基づいているようです)。また、Clojureの区切られた継続に関するDavid Nolenのライブラリも見られます。
ここでは、C#async
を「現在の継続を伴う呼び出し」と表現しています。
私の質問は、Clojure の core.async を「継続渡しスタイル」と記述できるかということです。
または、「継続」(区切られたものと区切られていないもの) はオーバーロードされた用語ですか?
編集: 追加の注意事項 - David Nolen は、core.async に対して wrt を言っています:
go ブロックの内部では、継続渡しスタイルでコードを手動で記述する必要がないように、これらのことを同期的に実行できるという錯覚を与えます。