shi*_*zhz 0 lisp sbcl common-lisp quote
在Common Lisp中,特殊运算符引用使得后面跟未评估的内容一样
(quote a) -> a
(quote {}) -> {}
Run Code Online (Sandbox Code Playgroud)
但为什么表单(quote())给我零?我正在使用SBCL 1.2.6,这是我在REPL中得到的:
CL-USER> (quote ())
NIL
Run Code Online (Sandbox Code Playgroud)
关于这个问题的更多信息:这是PCL第24章的一些代码
(defun as-keyword (sym)
(intern (string sym) :keyword))
(defun slot->defclass-slot (spec)
(let ((name (first spec)))
`(,name :initarg ,(as-keyword name) :accessor ,name)))
(defmacro define-binary-class (name slots)
`(defclass ,name ()
,(mapcar #'slot->defclass-slot slots)))
Run Code Online (Sandbox Code Playgroud)
当宏扩展为以下代码时:
(define-binary-class id3-tag
((major-version)))
Run Code Online (Sandbox Code Playgroud)
是
(DEFCLASS ID3-TAG NIL
((MAJOR-VERSION :INITARG :MAJOR-VERSION :ACCESSOR MAJOR-VERSION)))
Run Code Online (Sandbox Code Playgroud)
在类名ID3-TAG之后是NIL而不是().