我觉得有了宏对 `if
` 和 `cond
`,我们似乎缺少了 `if-let
` 的对应宏。
(defmacro cond-let
[& clauses]
(when clauses
(if (next clauses)
(list 'if-let (first clauses)
(second clauses)
(cons 'cond-let (nnext clauses)))
(first clauses))))
(cond-let [a nil] {:a a}
[b false] {:b b}
:default)
我没有找到关于这种 `cond-let
` 变体的讨论(没有引入太多新语法),但对 clojure.core 而言这似乎很自然。