and kotka.de/blog/2010/03/memoize_done_right.html has some intersting
discussion on memoization


On Wed, Jan 23, 2013 at 9:12 AM, Baishampayan Ghose <b.gh...@gmail.com>wrote:

> Take a look at core.cache - https://github.com/clojure/core.cache ~BG
>
> On Wed, Jan 23, 2013 at 1:11 PM, Omer Iqbal <momeriqb...@gmail.com> wrote:
> > I've been reading a bit about the STM, and here's an implementation of a
> > FIFO cache for producing a memoized version of a function. Is it correct
> to
> > use the STM in this case, or are there any  drawbacks?
> >
> > (defn bounded-memoize
> >   "Return a bounded memoized version of fn 'f'
> >    that caches the last 'k' computed values"
> >   [f k]
> >   (let [cache (ref {})
> >         values (ref clojure.lang.PersistentQueue/EMPTY)]
> >     (fn [& args]
> >       (if-let [e (find @cache args)]
> >         (val e)
> >         (let [result (apply f args)]
> >           (dosync
> >            (alter values conj args)
> >            (alter cache assoc args result)
> >            (if (> (count @values) k)
> >              (let [evict (peek @values)]
> >                (alter values pop)
> >                (alter cache dissoc evict))
> >              )
> >            result
> >            ))
> >
> >         )
> >       ))
> >   )
> >
> >
> > --
> > --
> > 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
> >
> >
>
>
>
> --
> Baishampayan Ghose
> b.ghose at gmail.com
>
> --
> --
> 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
>
>
>


-- 
On Clojure http://clj-me.cgrand.net/
Clojure Programming http://clojurebook.com
Training, Consulting & Contracting http://lambdanext.eu/

-- 
-- 
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


Reply via email to