From 7e692752af0ad01ee68681f50371823dc777d0a5 Mon Sep 17 00:00:00 2001
From: Phil Hagelberg <technomancy@gmail.com>
Date: Wed, 1 Jun 2011 09:10:09 -0700
Subject: [PATCH] Add metadata to memoized functions.

---
 src/clj/clojure/core.clj |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index a7338d8..37ae159 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -5576,12 +5576,13 @@
    :static true}
   [f]
   (let [mem (atom {})]
-    (fn [& args]
-      (if-let [e (find @mem args)]
-        (val e)
-        (let [ret (apply f args)]
-          (swap! mem assoc args ret)
-          ret)))))
+    (with-meta (fn [& args]
+                 (if-let [e (find @mem args)]
+                   (val e)
+                   (let [ret (apply f args)]
+                     (swap! mem assoc args ret)
+                     ret)))
+      {::memoize-cache mem ::prememoized f})))
 
 (defmacro condp
   "Takes a binary predicate, an expression, and a set of clauses.
-- 
1.7.1

