aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/seq_utils/seq_utils.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/seq_utils/seq_utils.clj')
-rw-r--r--src/clojure/contrib/seq_utils/seq_utils.clj70
1 files changed, 0 insertions, 70 deletions
diff --git a/src/clojure/contrib/seq_utils/seq_utils.clj b/src/clojure/contrib/seq_utils/seq_utils.clj
deleted file mode 100644
index 34355b40..00000000
--- a/src/clojure/contrib/seq_utils/seq_utils.clj
+++ /dev/null
@@ -1,70 +0,0 @@
-;;; seq_utils.clj -- Sequence utilities for Clojure
-
-;; by Stuart Sierra, http://stuartsierra.com/
-;; last updated August 12, 2008
-
-;; Copyright (c) 2008 Stuart Sierra. All rights reserved. The use and
-;; distribution terms for this software are covered by the Common
-;; Public License 1.0 (http://www.opensource.org/licenses/cpl1.0.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.
-
-
-(clojure/ns clojure.contrib.seq-utils)
-
-
-;; 'flatten' written by Rich Hickey,
-;; see http://groups.google.com/group/clojure/msg/385098fabfcaad9b
-(defn flatten
- "Takes any nested combination of sequential things (lists, vectors,
- etc.) and returns their contents as a single, flat sequence."
- [x]
- (let [s? #(instance? clojure.lang.Sequential %)]
- (filter (complement s?) (tree-seq s? seq x))))
-
-(defn separate
- "Returns a vector:
- [ (filter f s), (filter (complement f) s) ]"
- [f s]
- [(filter f s) (filter (complement f) s)])
-
-(defn includes?
- "Returns true if s contains something equal (with =) to x."
- [x s]
- (if (some (fn [y] (= y x)) s)
- true false))
-
-(defn indexed
- "Returns a lazy sequence of [index, item] pairs, where items come
- from 's' and indexes count up from zero.
-
- (indexed '(a b c d)) => ([0 a] [1 b] [2 c] [3 d])"
- [s]
- (map vector (iterate inc 0) s))
-
-;; group-by written by Rich Hickey;
-;; see http://paste.lisp.org/display/64190
-(defn group-by [f coll]
- "Returns a sorted map of the elements of coll keyed by the result of
- f on each element. The value at each key will be a vector of the
- corresponding elements, in the order they appeared in coll."
- (reduce
- (fn [ret x]
- (let [k (f x)]
- (assoc ret k (conj (get ret k []) x))))
- (sorted-map) coll))
-
-;; partition-by written by Rich Hickey;
-;; see http://paste.lisp.org/display/64190
-(defn partition-by [f coll]
- "Applies f to each value in coll, splitting it each time f returns
- a new value. Returns a lazy seq of lazy seqs."
- (when-let s (seq coll)
- (let [fv (f (first s))
- ends (drop-while #(= fv (f %)) (rest s))
- tw (fn this [s]
- (when-not (identical? s ends)
- (lazy-cons (first s) (this (rest s)))))]
- (lazy-cons (tw s) (partition-by f ends)))))