From f2f8cddb8b23fd3b932fccf1e40ced258ed71bb9 Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Sun, 13 Feb 2011 20:06:24 -0500 Subject: added sort-by-index-in, removed old index-of funcs --- src/utils.clj | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/utils.clj') diff --git a/src/utils.clj b/src/utils.clj index 25814f9..84f185a 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -446,10 +446,15 @@ { :result result :time (System/currentTimeMillis)}) result))))) -;; From Programming Clojure by Stuart Halloway - -(defn index-filter [pred coll] - (for [[idx elt] (indexed coll) :when (pred elt)] idx)) - -(defn index-of [pred coll] - (first (index-filter pred coll))) +;; Misc index/sorting funcs + +(defn sort-by-index-in + ([c1 c2] (sort-by-index-in c1 c2 nil nil)) + ([c1 c2 f1] (sort-by-index-in c1 c2 f1 nil)) + ([c1 c2 f1 f2] + (let [c2-map (zipmap (if f2 (map f2 c2) c2) + (range (count c2))) + sort-func (if f1 + #(get c2-map (f1 %)) + #(get c2-map %))] + (sort-by sort-func c1)))) -- cgit v1.2.3-70-g09d2