Lo siento por el título terriblemente vaga :)Clojure - Citando Confusión
Soy nuevo a las macros y estoy teniendo problemas para entender la diferencia entre estas dos afirmaciones:
`(+ 1 2 ~(+ 2 3)) ; => (clojure.core/+ 1 2 5)
'(+ 1 2 ~(+ 2 3)) ; => (+ 1 2 (clojure.core/unquote (+ 2 3)))
Cuando les funciono sin el fin de la cita , parecen bastante idénticos aparte de la calificación?
`(+ 1 2 (+ 2 3)) ; => (clojure.core/+ 1 2 (clojure.core/+ 2 3))
'(+ 1 2 (+ 2 3)) ; => (+ 1 2 (+ 2 3))
Así que, básicamente, estoy confundido por `vs '. Según tengo entendido, ambos citan todo lo que hay en la lista, por lo que no estoy seguro de por qué el comitente no se comporta de manera diferente. Básicamente `se comporta de la manera en que esperaría que tanto` como 'se comporten.
Gracias!
También se podría mencionar el gran papel [Cita Cuasi en Lisp por Alan Bawden] (http://www.scribd.com/doc/47702904/Bawden-Quasi-Quotation-in-Lisp). – Daimrod
Daimrod, sí, ¡gracias por el enlace! (Nota para principiantes: Hay algunas diferencias entre otros dialectos Lisp y Clojure. Por ejemplo, en CL y en el papel, ',' (espacio en blanco en Clojure) se usa para desmarcar. Además, en CL, a ',' fuera de la expresión backquoted no es válida (generalmente es un error del lector).) – danlei
Gracias, no me di cuenta que el desvinculación estaba reservado para la sintaxis-cita. Eso definitivamente explica los resultados. Estoy pasando por Joy of Clojure y me he detenido en el capítulo de Macro para experimentar y tratar de entender estas cosas, por lo que es posible que haya extrañado explicaciones en el capítulo :) – anonymous