Führt Pfund-Anführungszeichen (Hash-Anführungszeichen, # ') in Clojure die Auflösungs- und Symbolfunktionen aus?
Vielleicht können Sie mir helfen, dies in den Dokumenten zu finden. Ich verwende Pfund-Anführungszeichen, um unbewertete Funktionsnamen vor der Ausführung weitergeben zu können. Zum Beispiel:
(#'cons 1 ())
;(1)
(defn funcrunner [func a b]
(func a b))
(funcrunner cons 'a ())
;(a)
(funcrunner 'cons 'a ())
'()
(funcrunner #'cons 'a ())
;(a)
#'cons
;#'clojure.core/cons
(resolve (symbol 'cons))
;#'clojure.core/cons
Ich vermute, dass dies ein Reader-Makro ist.
Meine Frage lautet: (a) Wofür steht die Kurzform des Pfund-Zitats (# ')? (b) Können Sie erklären, was es tut? (c) Können Sie es in den Dokumenten finden? (d) Ist es tatsächlich eine Abkürzung für Auflösungs- und Symbolfunktionen?
PS - Für diejenigen, die nicht in den USA sind - # wird auch als "Hash" oder "Cross-Hash" bezeichnet.
PPS - Ich bin mir bewusst, dass mein Beispiel die Notwendigkeit für diese etwas überflüssig macht. Ich bin interessiert zu wissen, ob dies vollständig redundant ist oder ob es bestimmte Anwendungsfälle gibt.