var
(var name), #'name
プログラムの定義の var を返します。名前ごとに 1 つのオブジェクトで、#'ns/name と
表示されます。deref(または @)はルートを読み、呼び出すとルートを呼ぶため、関数を
渡せるところならどこでも #'f を f の代わりに使えます。宣言されただけで定義されない
名前の var は未束縛のルートを読みます(declare)。meta は、その位置より
上にある最新の定義が記録したもの(:arglists、docstring の :doc、名前のメタデータと
attr マップ、:line/:column/:file、:name、:ns)を返します。ローカルは var では
ありません(名前はローカルを越えて解決されます)。clojure.core の名前は core の var で、
#'clojure.core/name と表示されます。ルートは core の値、メタデータは :name、:ns と
マクロの :macro です。ここで値を持たない core の var(#'*err*)は拒否されます。