時折、他の人の Clojure コードを見ているdefn
と、var-quote 構文を使用して定義され、呼び出された関数が表示されます。
user> (defn a [] 1)
#'user/a
user> (a) ; This is how you normally call a function
1
user> (#'a) ; This uses the var-quote syntax and produces the same result
1
私の人生では、関数を呼び出すこれら2つの方法の違いを理解できません。評価ドキュメントには、呼び出しの演算子が var である場合に何が起こるかを示すものは何も見つかりません。これは、2 番目の形式が好まれる理由を示唆している可能性があります。binding
どちらも、割り当てと構文引用に対して同じように応答するようです。
(a)
それで、誰かがと上記の違いを説明するコードサンプルを提供してもらえます(#'a)
か?
編集: var-quote を使用して、字句バインディングによってシャドウされている var を取得できることは知っていlet
ますが、私が見ているコードではそうではないようです。