Clojure - Цитирование путаницы

Извините за ужасно расплывчатое название :)

Я новичок в макросах, и мне трудно понять разницу между этими двумя операторами:

`(+ 1 2 ~(+ 2 3)) ; => (clojure.core/+ 1 2 5)
'(+ 1 2 ~(+ 2 3)) ; => (+ 1 2 (clojure.core/unquote (+ 2 3)))

Когда я запускаю их без unquote, они кажутся скорее идентичными, кроме уточнения?

`(+ 1 2 (+ 2 3)) ; => (clojure.core/+ 1 2 (clojure.core/+ 2 3))
'(+ 1 2 (+ 2 3)) ; => (+ 1 2 (+ 2 3))

Так что в основном меня смущает `vs '. Насколько я понимаю, они оба цитируют все в списке, поэтому я не уверен, почему снятие кавычек ведет себя по-разному. В основном `ведет себя так, как я ожидал, что и` и 'будут вести себя.

Спасибо!

7
задан anonymous 3 January 2012 в 04:32
поделиться