【发布时间】:2017-01-19 09:27:06
【问题描述】:
在 O'Reilly 《Clojure Programming: Practical Lisp for the Java World》中,有一句话:
var 特殊形式这样做:
(def x 5)
(var x)
;= #' user/x
您已经多次看到在 REPL 中如何打印 var:#',后跟一个符号。这是扩展为对 var 的调用的读取器语法:
#'x
;= #' user/x
(Kindle 位置 1278-1282)。
对此进行测试似乎并非如此。我认为类型类型是相同的。
[user]> (def x 5)
#'user/x
[user]> (= 'x (var x))
false
[user]> (type 'x)
#<Class@c540f5a clojure.lang.Symbol>
[user]> (type (var x))
#<Class@77e9807f clojure.lang.Var>
[user]> 'x
x
[user]> (var x)
#'user/x
【问题讨论】:
-
'x计算结果为(quote x),而不是(var x)。(= 'x (quote x))的计算结果为true。x只是一个符号。它不需要引用var或其他任何内容。
标签: clojure