我正在尝试(1 unquote 2)
使用 quasiquote 生成列表。我试过这个:
`(1 unquote 2)
但是,在 Racket、MIT 方案和 Chez 方案中,我得到一个虚线列表:'(1 . 2)
.
所以我尝试了这个:
`(1 'unquote 2)
但是,我得到(1 'unquote 2)
.
我终于用这种技术得到了我想要的列表:
`(1 unquote 2 ,((lambda (x) x) 'unquote) 2) ; Returns: '(1 unquote 2)
为什么当unquote
准引用列表中的倒数第二个元素是准引用正确列表时,我会从准引用正确列表中得到一个点列表?
实际上,它并不总是产生一个点列表。例如:
`(1 unquote (list 2 3 4)) ; Returns: '(1 2 3 4)
当它是准引用列表中的倒数第二个元素时,请解释这种奇怪的行为。