PythonからいいところをひとつもってこれたのでClojureからももってくる。 Clojureでは数珠つなぎで処理する場所はわかりやすくThreaded Macroを使って書くことが多い。 これはわかりやすいのでCommon Lispでも実装しておく。 (defmacro -> (x &optional form &rest more) (cond ((not (null more)) `(-> (-> ,x ,form) ,@more)) ((not (null form)) (if (listp form) `(,(first form) ,x ,@(rest form)) (list form x))) (t x))) (defmacro ->> (x form &rest more) (cond ((not (null more)) `(->> (->> ,x ,form) ,

