ときどき Active Record を Common Lisp で実装したくなる。それでひっかかるものの一つがメソッドチェーン。 Ralis の Active Record Query Interface や jQuery や S2JDBC とか、メソッドチェーン多いよね。でも、Common Lisp だとメソッドチェーンはやりにくい。 リーダマクロという手はあるが、 Common Lisp らしくスペシャル変数と with 系マクロでいきたいと思う。 こんな感じになる。 (with-ar (facility) (where "name like ?" "%水族館") (when only-published-p (where :publish 1)) (order :name) (get-list)) with-ar でかこんで、後は普通に関数呼び出し。メソッドチェーンは条件分岐がある