Я пытаюсь создать список (1 unquote 2)
, используя квазицитаты. Я пробовал это:
`(1 unquote 2)
Однако в Racket, MIT Scheme и Chez Scheme я получаю пунктирный список: '(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)
Пожалуйста, объясните это странное поведение без кавычек, когда это предпоследний элемент в квазикавычках.