やっと『プログラミングClojure』を読了した。
本書は薄いし分かり易い。入門や概要を掴むにはもってこい。訳も読みやすいし。
ちなみにClojureとは、Java仮想マシン(JVM)上で動作するLisp方言のことである。Lispなので当然S式、つまりカッコだらけ。見た目はとっつきにくいけど強力なマクロが使える。そして、普通のLispとは違って基本は副作用を許さない。だから並行プログラミングがとても楽にできる。もちろんやろうと思えば副作用も取り入れられるしJavaのライブラリを簡単に扱うこともできる。そして、副作用と平行プログラミングを併用するためにトランザクションの考え方を取り入れた方法が用意されている。
等等、JavaのバックグラウンドがありLispや関数型言語に興味のある方には特にオススメだ。もちろん、逆にLisp使いでJavaに興味がある方にも良い。
最後に、コード例をば。本書の第7章で紹介されているマクロで制御フローのunless(ifの逆)の定義です。
(defmacro unless [expr form] (list 'if expr nil form))
ifのみクオートしているところがみそで、評価のタイミングをマクロ展開時に行うかどうかを制御しています。