Im O'Reilly "Clojure Programmierung: Praktische Lisp für die Java-Welt", gibt es eine Erklärung:wenn 'x in clojure zu (var x) auswertet, warum sind sie nicht gleich?
Die var besondere Form tut dies:
(def x 5)
(var x)
;= #' user/x
Sie‘ Ich habe schon einige Male gesehen, wie vars in der REPL: # 'gedruckt werden, gefolgt von einem Symbol. Dies ist Leser-Syntax, die zu einem Aufruf var erweitert:
#'x
;= #' user/x
(Kindle Standorte 1278-1282).
Dies auszuprobieren scheint nicht der Fall zu sein. Ich würde denken, dass die Typentypen die gleichen wären.
[user]> (def x 5)
#'user/x
[user]> (= 'x (var x))
false
[user]> (type 'x)
#<[email protected] clojure.lang.Symbol>
[user]> (type (var x))
#<[email protected] clojure.lang.Var>
[user]> 'x
x
[user]> (var x)
#'user/x
'' x' ergibt '(Zitat x) ', nicht' (var x) '. '(= 'x (Zitat x))' ergibt' wahr '. 'x' ist einfach ein Symbol. Es muss sich nicht auf eine 'var' oder irgendetwas anderes beziehen. – Thumbnail