为什么这里的 'emacs 与 'emacs 不同?
Why isn't 'emacs the same as 'emacs here?
第一个应该 return t 但没有这样做,而另一个 returning t。
他们应该是一样的。
(defvar list '((binds . 'emacs)))
(eq (cdr (assoc 'binds list)) 'emacs) ;; returns nil
(eq 'emacs 'emacs) ;; returns t
(type-of 'emacs) ;; returns symbol
(type-of (cdr (assoc 'binds list))) ;; Returns cons
这是怎么回事?
因为
(equal (cdr (assoc 'binds list)) ;; (quote emacs)
(quote (quote emacs))
即cdr
部分 returns 'emacs
而 'emacs
returns 只是符号本身,没有引号。
第一个应该 return t 但没有这样做,而另一个 returning t。 他们应该是一样的。
(defvar list '((binds . 'emacs)))
(eq (cdr (assoc 'binds list)) 'emacs) ;; returns nil
(eq 'emacs 'emacs) ;; returns t
(type-of 'emacs) ;; returns symbol
(type-of (cdr (assoc 'binds list))) ;; Returns cons
这是怎么回事?
因为
(equal (cdr (assoc 'binds list)) ;; (quote emacs)
(quote (quote emacs))
即cdr
部分 returns 'emacs
而 'emacs
returns 只是符号本身,没有引号。