Emacs Lisp で as-> マクロ
Clojure1.5のas->マクロをelispで。
(defmacro as-> (expr name &rest forms) `(let* ((,name ,expr) ,@(mapcar '(lambda (f) `(,name ,f)) forms)) ,name))
本家Clojureの実装はこんな感じ
(defmacro as-> [expr name & forms] `(let [~name ~expr ~@(interleave (repeat name) forms)] ~name))
このケースだと、interleveよりもmapcar(map)の方が分かり安い気がするー。