变量,作为一个通用的引用结构体,用于实现绑定,并具有反映这一现实的特殊读取器和打印器表示法。与共享变量“命名空间/名称”表示法的关键字和符号不同,变量在打印时虽表现为命名,但并未实现 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 项目的应用中非常有用,变量通常直接用作值,而在这种情境下,它们理想地可以与所代表的符号进行互换。