Подтвердить что ты не робот

Может ли кто-нибудь объяснить Clojure unquote-splice в простых терминах?

Я стучу головой о стену, пытаясь понять некоторые макросы Clojure, которые используют unquote-splice, и я не могу найти никакого ясного расширения того, что они необходимы. Может ли кто-нибудь объяснить это мне в фиктивных терминах?

4b9b3361

Ответ 1

Я не эксперт в Clojure, но поскольку это в основном Lisp, все должно быть похоже на то, что unquote-splice является unquote, который объединяет список в позицию, где он использовался. Разница выглядит так:

`(1 2 ~(list 3 4))   =>  (1 2 (3 4))
`(1 2 [email protected](list 3 4))  =>  (1 2 3 4)

`  == syntax-quote
~  == unquote
[email protected] == unquote-splice