vary-meta

added
1.0

ns
clojure.core

type
function

(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.

                user=> (meta (vary-meta 'foo assoc :a 1))
{:a 1}

            
                ;; continuing from the previous with-meta example
user=> (def wm (with-meta [1 2 3] {:my "meta"}))
#'user/wm

user=> wm
[1 2 3]

user=> (meta wm)
{:my "meta"}

user=> (def new-wm (vary-meta wm assoc :your "new meta"))
#'user/new-wm

user=> new-wm
[1 2 3]

user=> (meta new-wm)
{:my "meta", :your "new meta"}