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
-~----------~----~----~----~------~----~------~--~---

Reply via email to