sorry .. I was too quick in responding .. You are talking about something else.. Sunil.
On Thu, Jan 20, 2011 at 6:40 PM, Sunil S Nandihalli < sunil.nandiha...@gmail.com> wrote: > one of the following should give you a reasonable solution > http://clojuredocs.org/clojure_contrib/clojure.contrib.seq/indexed > <http://clojuredocs.org/clojure_contrib/clojure.contrib.seq/indexed> > http://clojuredocs.org/clojure_core/clojure.core/map-indexed > > <http://clojuredocs.org/clojure_core/clojure.core/map-indexed>Sunil. > > On Thu, Jan 20, 2011 at 6:36 PM, kony <kulakow...@gmail.com> wrote: > >> Hi, >> >> I am looking for something which operates similarly as doseq but in >> case of more than one binding traverses every sequence only one. I.e. >> >> wanted result: >> >> (doseq [x '(A B C) y '(1 2 3)] (println (list x y))) >> >> should produce: >> >> (A 1) >> (B 2) >> (C 3) >> >> OK I know that in this particular case there are some shorthands like >> using >> >> (doseq [x (indexed '(A B C))] (println (list (second x) (inc (first >> x)) ))) >> >> but I am looking for something general. >> >> Be honest I am starting to write a macros: >> >> (defmacro foreach [bind-vect expr] >> `(if (< 0 (count ~(second bind-vect))) >> (loop [~(symbol (first bind-vect)) (first ~(second >> bind-vect)) proc# >> (rest ~(second bind-vect))] >> (do >> ~expr >> (if (< 0 (count proc#)) >> (recur (first proc#) (next proc#))))))) >> >> and for two bindig pairs >> >> (defmacro foreach2 [bind-vect expr] >> `(if (< 0 (count ~(second bind-vect))) >> (loop [~(symbol (nth bind-vect 0)) (first ~(nth bind-vect >> 1)) >> coll1# (rest ~(nth bind-vect 1)) >> ~(symbol (nth bind-vect 2)) >> (first ~(nth bind-vect 3)) >> coll2# (rest ~(nth bind-vect >> 3))] >> (do >> ~expr >> (if (< 0 (count coll1#)) >> (recur (first coll1#) (next >> coll1#) (first coll2#) (next >> coll2#))))))) >> >> but I am not sure whether this is a good solution? >> >> On the other hand do you have an idea how to make foreach2 macro more >> general, handling any length of binding vector? >> >> -- >> 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<clojure%2bunsubscr...@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 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