aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChouser <chouser@n01se.net>2009-07-09 11:16:55 -0400
committerChouser <chouser@n01se.net>2009-07-09 11:16:55 -0400
commit4df3fae61cbd538786a73908eb0b8fc176b3fefd (patch)
treef3dcc004081cf67d980b56ab80e73a7a1d2d6c5b /src
parentc493df4c1fa6b0799f43b5d73bc62203c8d69f4e (diff)
def: Add defn-memo
Fixes #5
Diffstat (limited to 'src')
-rw-r--r--src/clojure/contrib/def.clj9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/clojure/contrib/def.clj b/src/clojure/contrib/def.clj
index 2ad789e0..cc3eef75 100644
--- a/src/clojure/contrib/def.clj
+++ b/src/clojure/contrib/def.clj
@@ -136,3 +136,12 @@ making private definitions more succinct."}
[~@pos & options#]
(let [~de-map (apply hash-map options#)]
~@body))))
+
+; defn-memo by Chouser:
+(defmacro defn-memo
+ "Just like defn, but memoizes the function using clojure.core/memoize"
+ [fn-name & defn-stuff]
+ `(do
+ (defn ~fn-name ~@defn-stuff)
+ (alter-var-root (var ~fn-name) memoize)
+ (var ~fn-name)))