Czy funt cytat (hash-quote, # ') w Clojure uruchamia funkcje rozwiązywania i symboli?
Być może pomożesz mi znaleźć to w dokumentach. Używam cytowania funtów, aby móc przekazywać nieocenione nazwy funkcji przed wykonaniem. Na przykład:
(#'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
Domyślam się, że jest to makro czytelnika.
Moje pytanie brzmi (a) Do czego służy skrót cytatu (# ”)? (b) Czy możesz wyjaśnić, co robi? (c) Czy możesz znaleźć to w dokumentach? (d) Czy faktycznie jest to skrót od funkcji rozwiązywania i symboli?
PS - Dla tych, którzy nie są w USA - # jest również znany jako „hash” lub „cross-hash”.
PPS - zdaję sobie sprawę, że mój przykład sprawia, że potrzeba tego trochę zbędnego. Chcę wiedzieć, czy jest to całkowicie zbędne, czy też istnieją konkretne przypadki użycia.