实际上我想要完全理解clojure,特别是符号
(def a 1)
(type a)
;;=>java.lang.Long
(type 'a)
;;=>clojure.lang.Symbol
Run Code Online (Sandbox Code Playgroud)
我知道这type是一个函数,所以它的参数首先被评估,所以我完全理解为什么上面的代码以这种方式工作.在流动的代码中,我决定使用宏来延迟评估
(defmacro m-type [x] (type x))
(m-type a)
;;==>clojure.lang.Symbol
Run Code Online (Sandbox Code Playgroud)
我很好,但我不能理解的是:
(m-type 'a)
;;=>clojure.lang.Cons
Run Code Online (Sandbox Code Playgroud)
为什么'a的类型是缺点