紙箱

覚えたことをため込んでいく

clojure

Clojure + core.async による非同期&並列プロセスの世界

core.asyncによる非同期プログラミング core.async はClojure用の、事実上標準の非同期プログラミングのライブラリです。 core.asyncの一番わかりやすい説明は、「Go-langのchannelのClojure版」という言い方でしょう。goマクロによってgo-blockを作り、その…

Clojureと「Simple Made Easy」

プログラミング言語というのは、その作者が理想とする世界に合うようにデザインされているものだから(みんな信じないかもだけど、Javaですらそうなのですよ)、Clojureのことを理解するには、作者であるRich Hickeyのプログラミング観を知るのが手っ取り早…

Clojureの世界観

ブログを書くのは久々です。 京都で小さな会社をやっていて、自社開発でClojureとClojureScriptを使用し続けて、概ね3年くらい使い続けています。その過程で、Clojure自体にも小さいながらソースレベルの貢献ができたりして、オープンソースプロジェクトと…

Clojureのいろんな並行処理の使い分け

この記事はもともとTumblrに書いていた自分のブログ記事を転載したものです。投稿日時も当時の投稿日時を再現してあります。 Clojureには標準でもagent系のsend, send-offに加え、future関数というスレッド起動系関数があります。 core.asyncの登場で、ここ…

スレッドマクロを整理する

この記事はもともとTumblrに書いていた自分のブログ記事を転載したものです。投稿日時も当時の投稿日時を再現してあります。 スレッドマクロって? スレッドマクロ(threading macro)は、Clojureのソースを人間に読みやすい形で書けるマクロで、現在のClojure…

マクロを便利に使う

この記事はもともとTumblrに書いていた自分のブログ記事を転載したものです。投稿日時も当時の投稿日時を再現してあります。 マクロは自分で作るもんなのか? Clojureでばりばり書いている人からすると愚問で、「Yes」としか言いようがない質問だろうけども…

Clojureのprotocol実践

この記事はもともとTumblrに書いていた自分のブログ記事を転載したものです。投稿日時も当時の投稿日時を再現してあります。 自社開発ではClojureを中心に使っていて、ユーザーが増えて欲しい気持ちもあって、Clojureのテキスト的なものを書いていては挫折、…