Revision: 4443 Author: hans URL: http://bknr.net/trac/changeset/4443
clarify code by using filter instead of hand-written recursive loop U trunk/projects/planetwit/planetwit.clj
Modified: trunk/projects/planetwit/planetwit.clj =================================================================== --- trunk/projects/planetwit/planetwit.clj 2009-08-19 19:50:49 UTC (rev 4442) +++ trunk/projects/planetwit/planetwit.clj 2009-08-20 00:56:01 UTC (rev 4443) @@ -57,24 +57,13 @@ (defn poll "Poll planet lisp, check for new postings, update Twitter status when new postings have appeared" [] - (save-data (let [old-urls (load-data) - process (fn [items all-items new-items] - (if items - (let [item (first items) - guid (:guid item) - title (:title item)] - (recur (rest items) - (conj all-items item) - (if (old-urls guid) - new-items - (conj new-items item)))) - (do - (post-twits new-items) - (into #{} (map #(:guid %) all-items)))))] - (process (map (fn [item] - {:guid (first (xml-> item :guid text)) - :title (first (xml-> item :title text))}) - (xml-> (feed-to-zip "http://planet.lisp.org/rss20.xml") - :channel :item)) - nil nil)))) + all-items (map (fn [item] + {:guid (first (xml-> item :guid text)) + :title (first (xml-> item :title text))}) + (xml-> (feed-to-zip "http://planet.lisp.org/rss20.xml") + :channel :item)) + new-items (filter (complement #(old-urls (:guid %))) all-items)] + (post-twits new-items) + (save-data (into #{} (map #(:guid %) all-items))))) +