diff options
author | Konrad Hinsen <konrad.hinsen@laposte.net> | 2009-02-08 17:29:44 +0000 |
---|---|---|
committer | Konrad Hinsen <konrad.hinsen@laposte.net> | 2009-02-08 17:29:44 +0000 |
commit | 9bb63b7b8cd0bdbdee32ac71d7aeab9405acf3a2 (patch) | |
tree | f2fdb4b018883aeb28b3cff13c55b548dcb14477 /src/clojure/contrib/accumulators.clj | |
parent | 4e820101c55e7bd6340c334bd419f91b4e21bfc9 (diff) |
accumulators: renamed add-coll to add-items and added queue accumulator
Diffstat (limited to 'src/clojure/contrib/accumulators.clj')
-rw-r--r-- | src/clojure/contrib/accumulators.clj | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/clojure/contrib/accumulators.clj b/src/clojure/contrib/accumulators.clj index a0a883da..93a13037 100644 --- a/src/clojure/contrib/accumulators.clj +++ b/src/clojure/contrib/accumulators.clj @@ -1,7 +1,7 @@ ;; Accumulators ;; by Konrad Hinsen -;; last updated January 22, 2009 +;; last updated February 3, 2009 ;; This module defines various accumulators (list, vector, map, ;; sum, product, counter, and combinations thereof) with a common @@ -34,8 +34,8 @@ :arglists '([acc item])} add selector) -(defn add-coll - "Add all elements of the collection coll to the accumulator acc." +(defn add-items + "Add all elements of a collection coll to the accumulator acc." [acc items] (reduce add acc items)) @@ -75,6 +75,20 @@ (conj v e)) ; +; Queue accumulator +; +(defvar empty-queue clojure.lang.PersistentQueue/EMPTY + "An empty queue accumulator. Adding an item appends it at the end.") + +(defmethod combine clojure.lang.PersistentQueue + [& vs] + (add-items (first vs) (apply concat (rest vs)))) + +(defmethod add clojure.lang.PersistentQueue + [v e] + (conj v e)) + +; ; Set accumulator ; (defvar empty-set #{} |