ClojureCLの方は単純なJOCLのラッパーなのかなと思って見てみたら、dependencyにcore.asyncとか入ってて、独自の抽象化レイヤーがありそうな感じですね(ちゃんとは見てないけど)
core.asyncが出てきたついでに、もうひとネタ振っておくと、こういう汎用的なライブラリのAPIとしてcore.asyncのチャネルが出てくるのってどうなんでしょう?
というのは、Alephの作者で、core.asyncと別の非同期プログラミング用のライブラリであるManifoldを作ってるztellmanさんの受け売りなんですけど
core.asyncって強力に実行モデルを規定してしまうので、それをライブラリ内で使うと、そのライブラリを使う側もそれに引っ張られてしまってよくないんでは?と
いう話がこのあたりに http://stackoverflow.com/questions/26801027/clojure-core-async-and-lamina
"core.async is an application-level abstraction, not a library-level one.” とか
athos: 例えば JS だと非同期実装で Promise ってありますけど、これを受けて Thenable な実装をすると Promise とも協調しやすくていいよね、という風潮がある気がします(こと非同期で使われることを想定したライブラリの場合)。まぁ core.async のように強力ではないので、受け入れられたのかなという気もしますけど、こういう例もあるよーくらいで。
なるほど
しかし、Thenableってすごい造語ですね。 一瞬何て読むのかと思いましたw
確かに、初見だと「?」ですよねw
ざ、ザネーブル? みたいな感じでした
わらったw
core.asyncのチャネルも一応プロトコルは切ってあるので、ユーザ定義型でextendしようと思えばできるようになってますけど、あれはあれで結構低レベルな感じで、あれを自前で実装はしたくないかなぁっていう雰囲気があります(実際にやったことはないので印象ですけど)
「へー」って思いながら github のソース開いてそっ閉じしました