diff options
author | scgilardi <scgilardi@gmail.com> | 2008-08-16 22:48:23 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2008-08-16 22:48:23 +0000 |
commit | 3dcb49711054c8f63313a6296cc23404d9e27294 (patch) | |
tree | e47ed2f55bceda2cb638f857aaa5188809e7aac4 /memoize/memoize.clj | |
parent | 1341206e051b4ad9473e8a2a3968f58510c628d7 (diff) |
move namespace-directory-aware libs into src/clojure/contrib
Diffstat (limited to 'memoize/memoize.clj')
-rw-r--r-- | memoize/memoize.clj | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/memoize/memoize.clj b/memoize/memoize.clj deleted file mode 100644 index db782082..00000000 --- a/memoize/memoize.clj +++ /dev/null @@ -1,32 +0,0 @@ -;; Copyright (c) Stephen C. Gilardi. All rights reserved. -;; The use and distribution terms for this software are covered by the -;; Common Public License 1.0 (http://opensource.org/licenses/cpl.php) -;; which can be found in the file CPL.TXT at the root of this distribution. -;; By using this software in any fashion, you are agreeing to be bound by -;; the terms of this license. -;; You must not remove this notice, or any other, from this software. -;; -;; File: memoize.clj -;; -;; scgilardi (gmail) -;; 02 June 2008 -;; -;; Based on Common Lisp code from: -;; http://asymmetrical-view.com/talks/lisp-presentation/lisp-presentation.pdf - -(clojure/in-ns 'clojure.contrib.memoize) -(clojure/refer 'clojure) - -(defn memoize - "Returns a memoized version of a referentially transparent function. The - memoized version of the function keeps a cache of the mapping from arguments - to results and, when calls with the same arguments are repeated often, has - higher performance at the expense of higher memory use." - [function] - (let [cache (ref {})] - (fn [& args] - (or (@cache args) - (let [result (apply function args)] - (dosync - (commute cache assoc args result)) - result))))) |