变量,尽管是一个通用的引用结构,却用于实现绑定,同时具有反映这一事实的特殊读取器和打印机符号。与共享 "命名空间/名称" 符号的 Keywords 和 Symbols 不同,变量在打印时虽然像命名的一样,但并不实现 clojure.lang.Named 接口。
附加的补丁实现了变量名属性。
示例
`
user=> (name :clojure.core/conj)
"conj"
user=> (namespace :clojure.core/conj)
"clojure.core"
user=> (name 'clojure.core/conj)
"conj"
user=> (namespace 'clojure.core/conj)
"clojure.core"
user=> (name #'clojure.core/conj)
"conj"
user=> (namespace #'clojure.core/conj)
"clojure.core"
user=> (with-local-vars [x 1] (name x))
"--unnamed--"
user=> (with-local-vars [x 1] (namespace x))
nil
user=> (with-local-vars [x 1] (println x))
<Var: --unnamed-->
`
这对于像 CinC 项目这样的应用来说很有用,在该项目中,变量常被直接用作值,在这个上下文中,它们理想上可以与它们表示的值的绑定符号互换。