diff options
author | Chouser <chouser@n01se.net> | 2009-07-09 11:16:55 -0400 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-07-09 11:16:55 -0400 |
commit | 4df3fae61cbd538786a73908eb0b8fc176b3fefd (patch) | |
tree | f3dcc004081cf67d980b56ab80e73a7a1d2d6c5b /src | |
parent | c493df4c1fa6b0799f43b5d73bc62203c8d69f4e (diff) |
def: Add defn-memo
Fixes #5
Diffstat (limited to 'src')
-rw-r--r-- | src/clojure/contrib/def.clj | 9 |
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))) |