doseq with index

3,899 views
Skip to first unread message

Răzvan Rotaru

unread,
Jun 22, 2014, 3:50:15 PM6/22/14
to clo...@googlegroups.com
Hi,

Is there an elegant way to use a doseq or for and also get an index to use? I find myself using map-indexed in these cases, and I prefer more the for constructs.


(doall (map-indexed
        (fn [i x]
          ;do stuff with side effects using i and x
         )
        a-lazy-seq))


Cheers,
Razvan

Sam Ritchie

unread,
Jun 22, 2014, 3:52:06 PM6/22/14
to clo...@googlegroups.com
(doseq [[idx item] (map-indexed vector a-lazy-seq)]
   (do-stuff! item idx))

June 22, 2014 at 1:50 PM
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
Sam Ritchie (@sritchie)

Mikera

unread,
Jun 22, 2014, 7:42:16 PM6/22/14
to clo...@googlegroups.com
I found this to be fairly common pattern so I wrote a "doseq-indexed" macro, which is part of my clojure-utils library.

Source: https://github.com/mikera/clojure-utils/blob/master/src/main/clojure/mikera/cljutils/loops.clj

usage:

(doseq-indexed [x (some-sequence) i]
  ;; do things with x and i bound to the element and the index respectively  
)
Reply all
Reply to author
Forward
0 new messages