ClojureとCommon Lispのcondの話

Common LispClojureではcondの書式がちょっと違う。

Common Lispだと、

(cond
  ((test) (expr))
  ((test) (expr)))

Clojureだと、

(cond
  (test) (expr)
  (test) (expr))

で、Clojureだとtestとexprの間に改行入れたら読みにくい、という話。

こんな感じ。

(cond
  (test)
  (expr)
  (test)
  (expr))

読みにくい。Common Lispならネストした括弧のおかげでいい感じになる。

(cond
  ((test)
   (expr))
  ((test)
   (expr)))

でも、そこに改行を入れたくなるような長いexprは大抵括弧が二段以上あるので、

(cond
  (test) (foo
           (bar baz))
  (test) (hoge
           (piyo fuga)))

みたいに途中で改行すればいいんじゃないかというのが私の意見。

もしくはcl-condマクロを書く。

プログラミングClojureにも「これは好みの問題で、どちらの方式にもそれぞれ支持者がいる」とあるし、Clojure版が正しいという訳じゃない。

でも、Clojureの設計者は括弧の少ない方を選んだので、Clojureで書くときはClojureで読みやすい書き方をすればいいと思う。

gdgd乙>>自分