Yo era la manipulación de algunos datos e interponer usada al final. Pero actuó de manera diferente cuando se trata de algunas letras como , `~
Comportamiento esperado
(interpose '! ["a" "b" "c"])
=> ("a" ! "b" ! "c")
(interpose 'k ["a" "b" "c"])
=> ("a" k "b" k "c")
(interpose '- ["a" "b" "c"])
=> ("a" - "b" - "c")
comportamiento no esperado (Ellos función en lugar de los datos de resultado ida y vuelta)
(interpose ', ["a" "b" "c"])
=> #object[clojure.core$interpose$fn__6471 0x6f0c27f3 "clojure.core$interpose$fn__6471@6f0c27f3"]
(interpose '` ["a" "b" "c"])
=> #object[clojure.core$interpose$fn__6471 0x7b94fbcb "clojure.core$interpose$fn__6471@7b94fbcb"]
(interpose '~ ["a" "b" "c"])
=> #object[clojure.core$interpose$fn__6471 0x36966945 "clojure.core$interpose$fn__6471@36966945"]
Esos personajes tienen un significado especial en Clojure y simplemente no pueden entrar en ellos sólo con la cita. Por lo que se manejan con su significado por el lector y entonces su '
cotización se utiliza para la siguiente forma. Todo esto dará lugar a código que llama a la versión de una sola aridad de interpose
, que a su vez le dará un transductor, lo que resulta en las funciones que se ven como los resultados.
Si usted quiere tener esos personajes como símbolos, se puede utilizar symbol
. P.ej
user=> (interpose (symbol ",") ["a" "b" "c"])
("a" , "b" , "c")
Los significados de los personajes son:
,
es un espacio en blanco`
y~
están sintaxis cotización y fin de la cita (utilizado principalmente en las macros)
El código resultante con el comportamiento inesperado se ve básicamente como esto, entonces:
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"]))