Все эти символы имеют особое значение в Clojure, и вы просто не можете ввести их только с цитатой. Таким образом, они обрабатываются с их значением читателем, а затем ваша цитата '
используется для следующей формы. Все это приведет к коду, который вызывает одно-арную версию interpose
, которая затем даст вам преобразователь, что приведет к получению функций, которые вы увидите как результаты.
Если вы хотите, чтобы эти символы были символы, вы можете использовать symbol
. Например,
user=> (interpose (symbol ",") ["a" "b" "c"])
("a" , "b" , "c")
Значения этих символов:
Результирующий код с неожиданным поведением выглядит в основном так:
user=> `(interpose ', ["a" "b" "c"])
(clojure.core/interpose (quote ["a" "b" "c"]))
user=> `(interpose '` ["a" "b" "c"])
(clojure.core/interpose (quote (clojure.core/apply clojure.core/vector (clojure.core/seq (clojure.core/concat (clojure.core/list "a") (clojure.core/list "b") (clojure.core/list "c"))))))
user=> `(interpose '~ ["a" "b" "c"])
(clojure.core/interpose (quote ["a" "b" "c"]))