(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

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"))

めでたしめでたし。