(defn replace-meta [meta new-meta]
(if (= :const (:op meta))
(assoc meta :val new-meta)
(let [meta-map (mapv (fn [k v]
(when-not (elides (:form k))
[k v]))
(:keys meta) (:vals meta))]
(assoc meta
:keys (vec (keep first meta-map))
:vals (vec (keep second meta-map))))))