samppi <rbysam...@gmail.com> writes: > with-meta's behavior is annoying for me. I often have something like > this: > > (defn a [blah] (with-meta blah {:type ::incredible})) > (defn b [foo] (with-meta (a foo) {::b 2})) > > I'd like ^(b []) to be {:type ::incredible, ::b 2}. But with-meta > overwrites the metadata from a completely. Is there a standard > function in core or contrib that does: > (defn add-meta [obj obj-meta] > (with-meta obj (into (meta obj) obj-meta)))
I think what you want is vary-meta: user> (doc vary-meta) ------------------------- clojure.core/vary-meta ([obj f & args]) Returns an object of the same type and value as obj, with (apply f (meta obj) args) as its metadata. > (defn a [blah] (with-meta blah {:type ::incredible})) > (defn b [foo] (vary-meta (a foo) assoc ::b 2)) > ^(b []) ;; => {:user/b 2, :type :user/incredible} -Phil --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---