变量,虽然是一种通用的引用结构,但用于实现绑定,并且具有反映这一事实的特殊读取器和打印表示法。与共享变量命名"命名空间/名称"表示法的关键字和符号不同,变量在打印时看似实现了命名功能,但并未实现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项目这样的应用程序,其中变量通常直接用作值,在这些上下文中,它们理想上是可互换的,与它们表示的绑定值相关联的符号。