Hello forum, Given
(def m (sorted-map 1 :a 2 :b 3 :c 4 :d 5 :e)) , (nth m 0) throws 'UnsupportedOperationException nth', while (first m) ; -> [1 :a] (next m) ; -> ([2 :b] [3 :c] [4 :d] [5 :e]) (nthnext m 1) ; -> ([2 :b] [3 :c] [4 :d] [5 :e]) . How do you think about nth accepts maps (defn my-nth [coll index] (loop [n index xs (seq coll)] (if-let [x (first xs)] (if (zero? n) x (recur (dec n) (next xs)))))) (my-nth m 0) ; -> [1 :a] like the implementation of nthnext? Of cource, this should be used for collections only which don't supported nth directly, I think. A form (let [[a b c & d :as e] [1 2 3 4 5]] [a b c d e]) returns [1 2 3 (4 5) [1 2 3 4 5]] , but (let [[a b c & d :as e] (sorted-map 1 :a 2 :b 3 :c 4 :d 5 :e)] [a b c d e]) throws 'UnsupportedOperationException nth'. What do you think if it returned [[1 :a] [2 :b] [3 :c] {4 :d 5 :e} {1 :a 2 :b 3 :c 4 :d 5 :e}] . Or isn't it good that you can write operations for a map like (loop [[[k v :as x] & xs] m acc '()] (if x (recur xs (cons acc (some-operation-for k v))) acc)) ? Please let me hear opinions. Regards, Yoshinori Kohyama -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en