A flatter cond
Long time, no post. I’ve had two hiatus (one of this kind and one of that kind) and I’m still going through the pile of accumulated work (including the bird book — it’s a painted snipe).
To warm up, a little macro I find quite handy:
(ns flatter.cond (:refer-clojure :exclude [cond])) (defmacro cond "A variation on cond which sports let bindings: (cond (odd? a) 1 :let [a (quot a 2)] (odd? a) 2 :else 3)" [& clauses] (when-let [[test expr & clauses] (seq clauses)] (if (= :let test) `(let ~expr (cond ~@clauses)) `(if ~test ~expr (cond ~@clauses)))))