unquoting符号下面的一段代码给了我预期的结果:Common Lisp的:在反引号
(let ((name 'test)
(args '("arg1" "arg2")))
`(defun ,name ,@args))
;; (DEFUN TEST "arg1" "arg2")
为什么如果args
是一个符号列表做了QUOTE
出现?
(let ((name 'test)
(args '('arg1 'arg2)))
`(defun ,name ,@args))
;; (DEFUN TEST (QUOTE ARG1) 'ARG2)
'('arg1'arg2)'不是一个符号列表,它是一个列表列表。第一个列表是'(引用arg1)',第二个列表是'(引用arg2)'。 –
我认为标准打印机通过将数据'(quote x)'打印为''x'来做一个大的破坏。 – Sylwester