var

added

ns
clojure.core

type
var

The symbol must resolve to a var, and the Var object itself (not its value)
is returned. The reader macro #'x expands to (var x). See
http://clojure.org/special_forms for more information.

                ;;getting meta-data for a defined symbol (as opposed to what it's pointing to.

user=> meta
#<core$meta clojure.core$meta@2e257f1b>

user=> (var meta)
#'clojure.core/meta

;; Reader shortcut for var is #'
user=> #'meta
#'clojure.core/meta

user=> (meta (var meta))
{:ns #<Namespace clojure.core>, :name meta, :file "clojure/core.clj", :line 178, :arglists ([obj]), :doc "Returns the metadata of obj, returns nil if there is no metadata.", :added "1.0"}

            
                => *clojure-version*
{:major 1, :minor 5, :incremental 0, :qualifier "RC17"}
=> var
;CompilerException java.lang.RuntimeException: Unable to resolve symbol: var in this context, compiling:(NO_SOURCE_PATH:1:42) 
=> (var)
;CompilerException java.lang.NullPointerException, compiling:(NO_SOURCE_PATH:1:1) 
=> (var 1)
;CompilerException java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.Symbol, compiling:(NO_SOURCE_PATH:1:1) 
=> (var defn)
#'clojure.core/defn
=> (var defn 1 2 3 4)
#'clojure.core/defn

            
                user> (def a 1)
#'user/a

user> (def b (var a))
#'user/b

user> (alter-var-root (var a) inc)
2

user> (alter-var-root b inc)
3

user> (deref b)
3