J'ai été la navigation sur le clojure source et j'ai été surpris par la façon dont la lorsque la macro est définie:
user=> (source when)
(defmacro when
"Evaluates test. If logical true, evaluates body in an implicit do."
{:added "1.0"}
[test & body]
(list 'if test (cons 'do body)))
nil
user=>
Je m'attendais à être écrit quelque chose comme ceci à la place:
(defmacro when [test & body] `(if ~test (do ~@body)))
Pourquoi le réel macro écrite dans cet moins de façon habituelle?