A while back the discussion on the "bounded memoize" thread in this forum lead to Meikel writing up a nice summary of how to do caching, providing a pluggable strategy: lru, ttl, fifo, etc. Meikel's writeup can be found at http://kotka.de/blog/2010/03/memoize_done_right.html
It presents a bunch of different implementations, detailing whats good/ bad about each of them. On Dec 31 2010, 3:35 am, Miki <miki.teb...@gmail.com> wrote: > Hello, > > I'm wring a service that polls RSS feeds (using feedme). And I'd like to act > only on the new entries in each feed. > So far I have something like: > > (defn get-new-entries [seen] > (let [seen? (complement seen)] > (filter #(seen? (:id %)) (get-entries)))) > > (defn poll [sleep-time] > (loop [seen #{}] > (let [entries (get-new-entries seen)] > (doall (map process-entry entries)) > (println "================================") > (Thread/sleep sleep-time) > (recur (union seen (set (map :id entries))))))) > > (Full demo code athttps://gist.github.com/760094) > > The problem is that "seen" will grow without bounds. > Is there a built in way to have some sort of LRU cache or should I use > external libraries (like plru)? > > Thanks, > -- > Miki -- 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