我对Clojure还比较新,不确定单引号和反引号在Clojure中的区别。
(def x 5)
;; Question 1
(+ x x) ;; evaluates to 10
'(+ x x) ;; evaluates to (+ x x)
`(+ x x) ;; evaluates to (clojure.core/+ user/x user/x)
;; Question 2
`(~+ ~x ~x) ;; evaluates to (#<core$_PLUS_ clojure.core$_PLUS_@32ee28a9> 5 5)
- 请纠正我如果我错了,但似乎撇号会阻止所有符号(例如+和x)解析为它们各自的变量,而反引号允许符号解析为它们的变量(但不会计算变量中的值)。这是否准确?
- 这里的波浪号符号(~)到底是做什么的?它是将变量评估为其实际值(例如将+符号评估为函数对象并将x符号评估为数字对象)吗?如果您可以使用Clojure的READ-COMPILE-EVAL阶段来解释这一点,那将非常有帮助。