Почему вложенный квазицитат не разворачивает сплайс-кавычку? - PullRequest
1 голос
/ 08 мая 2019

Почему первый макрос 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)))))))

1 Ответ

1 голос
/ 08 мая 2019

В первом примере

(quasiquote (quasiquote (unquote (quasiquote (unquote-splicing x)))))

Это имеет 3 квазицитаты и 2 кавычки, поэтому 'x' не будет оцениваться.

во втором примере

(quasiquote (quasiquote (unquote (quasiquote (unquote (unquote x))))))

есть 3 квазицитаты и 3 кавычки, поэтому вместо x будет указано его значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...