Hi, just in case you want a thread-safe, optimal version based on the classic memoize discussion[1].
(defmacro memofn [name args & body] `(let [cache# (atom {})] (fn ~name [& args#] (let [update-cache!# (fn update-cache!# [state# args#] (if-not (contains? state# args#) (assoc state# args# (delay (let [~args args#] ~@body))) state#))] (let [state# (swap! cache# update-cache!# args#)] (-> state# (get args#) deref)))))) Sincerely Meikel [1]: http://kotka.de/blog/2010/03/memoize_done_right.html -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en