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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en