为什么第一个宏unquote-splicing
不产生(quasiquote (unquote (quasiquote 1 2)))
,但是第二个示例替换了该值?
(define x (list 1 2))
(t '(quasiquote (unquote (quasiquote (unquote-splicing x))))
(quasiquote (quasiquote (unquote (quasiquote (unquote-splicing x))))))
(t '(quasiquote (unquote (quasiquote (unquote (1 2)))))
(quasiquote (quasiquote (unquote (quasiquote (unquote (unquote x)))))))
答案 0 :(得分:1)
在第一个示例中
(quasiquote (quasiquote (unquote (quasiquote (unquote-splicing x)))))
这有3个准引号和2个非引号,因此不会评估'x'。
在第二个示例中
(quasiquote (quasiquote (unquote (quasiquote (unquote (unquote x))))))
有3个准引号和3个非引号,因此'x'将被其值替换。