ns-map
名前空間は実際にマップとして動作し、次の関数を使用して名前空間を直接確認できます。
autotestbed.core> (pprint (take 5 (ns-map *ns*)))
nil
([sorted-map
#<Var@6899a7ce:
#<core$sorted_map clojure.core$sorted_map@5875c014>>]
[read-line
#<Var@1de9e86e: #<core$read_line clojure.core$read_line@57c00972>>]
[re-pattern
#<Var@74064c7b:
#<core$re_pattern clojure.core$re_pattern@37d02427>>]
[keyword?
#<Var@4798088a:
#<core$keyword_QMARK_ clojure.core$keyword_QMARK_@630b813f>>]
[hta-deploy-cmd
#<Var@7a7bce95:
#<core$hta_deploy_cmd autotestbed.core$hta_deploy_cmd@6a6a782d>>])
より具体的には、変数をオブジェクトにマップします。
関数をそのvarでルックアップして、変更がプログラム全体に即座に伝播するようにしたい場合は、コンパイル時にvarに含まれていた関数の代わりに、varを呼び出すことができます。これにより、すべての呼び出しでルックアップが行われます。
(#'foo 4) looks the function up in the var every time
(foo 4) looks it up in the map once when it's compiled.