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