extraño comportamiento de la función 'Interpose' en Clojure

Ertugrul Cetin:

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"]
cfrick:

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:

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"]))

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=377978&siteId=1
Recomendado
Clasificación