Ci scusiamo per il titolo terribilmente vaghi :)Clojure - Citando Confusione
Sono nuovo di macro e sto avendo difficoltà a capire la differenza tra queste due affermazioni:
`(+ 1 2 ~(+ 2 3)) ; => (clojure.core/+ 1 2 5)
'(+ 1 2 ~(+ 2 3)) ; => (+ 1 2 (clojure.core/unquote (+ 2 3)))
Quando li ho eseguito senza l'unquote , sembrano piuttosto identici a parte le qualifiche?
`(+ 1 2 (+ 2 3)) ; => (clojure.core/+ 1 2 (clojure.core/+ 2 3))
'(+ 1 2 (+ 2 3)) ; => (+ 1 2 (+ 2 3))
Quindi in pratica sono confuso da "vs". La mia comprensione è che entrambi citano tutto nella lista, ed è per questo che non sono sicuro del perché la unquotazione si comporti diversamente. Fondamentalmente `si comporta come mi aspetterei che sia 'che' si comportino.
Grazie!
Si potrebbe anche parlare della grande carta [Quotazione Quasi in Lisp da Alan Bawden] (http://www.scribd.com/doc/47702904/Bawden-Quasi-Quotation-in-Lisp). – Daimrod
Daimrod, sì, grazie per il link! (Nota per i principianti: ci sono alcune differenze tra gli altri dialoghi Lisp e Clojure.Ad esempio, in CL e nel foglio, ',' (spazio bianco in Clojure) viene usato per non quotare. Inoltre, in CL, un ',' all'esterno di un l'espressione backquoted non è valida (in genere un errore del lettore).) – danlei
Grazie, non mi sono reso conto che lo smascheramento era riservato per la sintassi-citazione. Questo spiega sicuramente i risultati. Sto attraversando Joy of Clojure e mi sono soffermato nel capitolo Macro per sperimentare e provare a capire questa roba, quindi è possibile che abbia perso le spiegazioni più avanti nel capitolo :) – anonymous