Qual è la differenza tra la valutazione di double e # 'double in Clojure/Lisp?Qual è la differenza tra procedura e procedura # in Lisp/Clojure?
1:2 user=> double
#<core$double__4077 [email protected]>
1:3 user=> #'double
#'clojure.core/double
Qual è la differenza tra la valutazione di double e # 'double in Clojure/Lisp?Qual è la differenza tra procedura e procedura # in Lisp/Clojure?
1:2 user=> double
#<core$double__4077 [email protected]>
1:3 user=> #'double
#'clojure.core/double
In Clojure, #'foo
è un'abbreviazione per (var foo)
, che restituisce l'oggetto variabile foo
riferisce a, rispetto al suo valore. Cercarlo nel riferimento:
Non sono sicuro se si vuole anche conoscere il significato in Lisp: In Common Lisp, #'foo
è una scorciatoia per (function foo)
, che viene utilizzato per accedere al valore funzione di legato al nome foo
quando non è in posizione dell'operatore.
leggermente sbagliato. (funzione foo) cerca il valore funzionale, vero, ma non necessariamente dal simbolo. Una funzione lessicale non ha simboli coinvolti, quindi considera il valore funzionale associato al nome (!) Foo dall'ambiente lessicale. –
Corretto, corretto. Dovrei davvero fissare la mia tendenza a dire "simbolo" quando intendo "nome". – Svante