clojure-japan

athos 2015-06-15T02:49:51.000359Z

ClojureCLの方は単純なJOCLのラッパーなのかなと思って見てみたら、dependencyにcore.asyncとか入ってて、独自の抽象化レイヤーがありそうな感じですね(ちゃんとは見てないけど)

athos 2015-06-15T03:23:58.000360Z

core.asyncが出てきたついでに、もうひとネタ振っておくと、こういう汎用的なライブラリのAPIとしてcore.asyncのチャネルが出てくるのってどうなんでしょう?

athos 2015-06-15T03:25:13.000361Z

というのは、Alephの作者で、core.asyncと別の非同期プログラミング用のライブラリであるManifoldを作ってるztellmanさんの受け売りなんですけど

athos 2015-06-15T03:26:30.000362Z

core.asyncって強力に実行モデルを規定してしまうので、それをライブラリ内で使うと、そのライブラリを使う側もそれに引っ張られてしまってよくないんでは?と

athos 2015-06-15T03:27:17.000363Z

いう話がこのあたりに http://stackoverflow.com/questions/26801027/clojure-core-async-and-lamina

athos 2015-06-15T03:28:01.000365Z

"core.async is an application-level abstraction, not a library-level one.” とか

ayato_p 2015-06-15T07:13:52.000366Z

athos: 例えば JS だと非同期実装で Promise ってありますけど、これを受けて Thenable な実装をすると Promise とも協調しやすくていいよね、という風潮がある気がします(こと非同期で使われることを想定したライブラリの場合)。まぁ core.async のように強力ではないので、受け入れられたのかなという気もしますけど、こういう例もあるよーくらいで。

athos 2015-06-15T07:17:31.000367Z

なるほど

athos 2015-06-15T07:18:03.000368Z

しかし、Thenableってすごい造語ですね。 一瞬何て読むのかと思いましたw

ayato_p 2015-06-15T07:18:58.000369Z

確かに、初見だと「?」ですよねw

athos 2015-06-15T07:19:56.000370Z

ざ、ザネーブル? みたいな感じでした

ayato_p 2015-06-15T07:20:20.000371Z

わらったw

athos 2015-06-15T07:22:46.000372Z

core.asyncのチャネルも一応プロトコルは切ってあるので、ユーザ定義型でextendしようと思えばできるようになってますけど、あれはあれで結構低レベルな感じで、あれを自前で実装はしたくないかなぁっていう雰囲気があります(実際にやったことはないので印象ですけど)

ayato_p 2015-06-15T07:31:45.000373Z

「へー」って思いながら github のソース開いてそっ閉じしました