(gensym) (gensym prefix-string)
Returns a new symbol with a unique name. If a prefix string is supplied, the name is prefix# where # is some unique number. If prefix is not supplied, the prefix is 'G__'.
user=> (gensym "foo")
foo2020
user=> (gensym "foo")
foo2027
user=> (gensym "foo")
;; ...
user=> (gensym)
G__2034
user=> (let [my-unique-sym (gensym)]
my-unique-sym)
G__2075
;; syntax-reader uses gensym for non-namespace-qualified symbols ending with '#'
;; http://clojure.org/reader
user=> `(name0#) ; gensym, form is useful in defmacro
(name0__1206__auto__)
user=> `(user/name1#) ; no gensym, namespace-qualified
(user/name1#)
user=> `(:key0#) ; no gensym, keyword
(:key0#)
user=> `(::key1#) ; no gensym, keyword
(:user/key1#)