On Apr 20, 2009, at 12:19 PM, Michael Hunger wrote:
> > Is it possible to use :while to shortcut a for macro when a certain > number of yiels have happened? > > e.g. (for [x (range 1000) :when (= (rem x) 1) :while (number of > yields <= 10)] > > so i want only the first 10 results. Is it possible? Yes... (let [yields (ref 0)] (for [x (range 1000) :when (when (odd? x) (dosync (ref-set yields (inc @yields))) true) :while (<= @yields 10)] x)) => (1 3 5 7 9 11 13 15 17 19) Is it advisable? No. > > Or should I just use (take 10 ) on the for ? Definitely yes. Aloha, David Sletten --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---