Ho appena letto sul sharpsign macro lettore di due punti e che sembrava che ha avuto un effetto molto simile a gensymDifferenze tra Sharpsign Colon e gensym
Colon Sharpsign: "introduce un simbolo uninterned"
gensym: "crea e restituisce un simbolo fresco uninterned"
Quindi, un semplice test
CL-USER> #:dave
; Evaluation aborted on #<UNBOUND-VARIABLE DAVE {1002FF77D3}>.
CL-USER> (defparameter #:dave 1)
#:DAVE
CL-USER> #:dave
; Evaluation aborted on #<UNBOUND-VARIABLE DAVE {100324B493}>.
Freddo in modo che non riesca come dovrebbe.
Ora per la prova di macro
(defmacro test (x)
(let ((blah '#:jim))
`(let ((,blah ,x))
(print ,blah))))
CL-USER> (test 10)
10
10
CL-USER>
dolce in modo che possa essere utilizzato come in una sorta di modo gensym.
Per me sembra più pulito di gensym con un risultato apparentemente identico. Sono sicuro che mi manca un dettaglio fondamentale quindi la mia domanda è: di cosa si tratta?
Oh sì, non avevo passato tempo a pensare alle implicazioni di cattura, che ovviamente l'intero punto ... due! Grazie per questo – Baggers