summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTimothy Pratley <timothypratley@gmail.com>2010-01-28 16:18:09 +1100
committerStuart Halloway <stu@thinkrelevance.com>2011-01-05 07:46:10 -0500
commitc5673086d40f206135b99a37001c80a4016c3877 (patch)
tree9eac678f4841d8a5575bad89daaf4664d016dcb3 /src
parent6ca22bc7fe4b53576c6d7ed0304d4344622e8681 (diff)
Added sorted-by support for walk and tests
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'src')
-rw-r--r--src/clj/clojure/walk.clj14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/clj/clojure/walk.clj b/src/clj/clojure/walk.clj
index 613a294c..10215b0f 100644
--- a/src/clj/clojure/walk.clj
+++ b/src/clj/clojure/walk.clj
@@ -36,25 +36,21 @@ the sorting function."}
"Traverses form, an arbitrary data structure. inner and outer are
functions. Applies inner to each element of form, building up a
data structure of the same type, then applies outer to the result.
- Recognizes all Clojure data structures except sorted-map-by.
- Consumes seqs as with doall."
+ Recognizes all Clojure data structures. Consumes seqs as with doall."
+
{:added "1.1"}
[inner outer form]
(cond
(list? form) (outer (apply list (map inner form)))
+ (instance? clojure.lang.IMapEntry form) (outer (vec (map inner form)))
(seq? form) (outer (doall (map inner form)))
- (vector? form) (outer (vec (map inner form)))
- (map? form) (outer (into (if (sorted? form) (sorted-map) {})
- (map inner form)))
- (set? form) (outer (into (if (sorted? form) (sorted-set) #{})
- (map inner form)))
+ (coll? form) (outer (into (empty form) (map inner form)))
:else (outer form)))
(defn postwalk
"Performs a depth-first, post-order traversal of form. Calls f on
each sub-form, uses f's return value in place of the original.
- Recognizes all Clojure data structures except sorted-map-by.
- Consumes seqs as with doall."
+ Recognizes all Clojure data structures. Consumes seqs as with doall."
{:added "1.1"}
[f form]
(walk (partial postwalk f) f form))