A minimal implementation of functors in Clojure