Clojure のこの関数だけ読み込みたくない!!
最近 Clojure で書かれたコード読みまくってるんですけど、まぁ知らないテクニックとか色々あるわけでして。そんな中で知ったひとつのテクニックがこれ。
例えば、 Clojure そのものの compile 関数は使いたくないけど、このネームスペースに compile 関数というのを別途作りたいというとき、 compile2 とか foo-compile とか名前つけるの嫌なので Clojure の compile 関数を無視して新しい compile 関数を定義したいですよね。そのままやると競合が起こっていると警告が出るので、それを防ぐために refer-clojure を使います。
(ns foo.bar (:refer-clojure :exclude [compile])) (defn compile [x] (println "New compile function"))
めでたしめでたし。