(defmacro cond-assoc [x name] `(conj ~x (when ~name [~(keyword name) ~name]))) (let [foo 1 bar nil] (-> {:a 1} (cond-assoc foo) (cond-assoc bar))) ;=> {:a 1, :foo 1}