読んでたコードにreifyが出てきたけど、知らなかったので使い方などのメモ。reifyは特定の(クラスではなく)オブジェクトの挙動を変えるような関数。例えばこんな感じ。
(def m {"a" 1})
(str m) ; "{\"a\" 1}"
(str (let [x m]
(reify
java.lang.Object
(toString [this] "hoge")))) ; "hoge"
自信が全くないけど、Rubyの特異メソッドとかが近い?