Hi Brett, A :while clause continues the evaluation ONLY while it's expression is true
(for [x (range 10) y (range 10) :while (< x y)] [x y]) will terminate as soon as (< x y) is false. Since (< 0 0) is the first expr to evaluate, evaluation stops right there. What you want is (for [x (range 10) y (range 10) :when (< x y)] [x y]) Cheers Andreas what you want is for ... :when On 21/03/2011, at 11:43 AM, Brett Morgan wrote: > Hey all, > > I'm not understanding why the following examples don't line up. In my mind > they should be identical. What am i not getting? > > (user=> (filter (fn [[x y]] (< x y)) (for [x (range 10) y (range 10)] [x y])) > ([0 1] [0 2] [0 3] [0 4] [0 5] [0 6] [0 7] [0 8] [0 9] [1 2] [1 3] [1 4] [1 > 5] [1 6] [1 7] [1 8] [1 9] [2 3] [2 4] [2 5] [2 6] [2 7] [2 8] [2 9] [3 4] [3 > 5] [3 6] [3 7] [3 8] [3 9] [4 5] [4 6] [4 7] [4 8] [4 9] [5 6] [5 7] [5 8] [5 > 9] [6 7] [6 8] [6 9] [7 8] [7 9] [8 9]) > user=> (for [x (range 10) y (range 10) :while (< x y)] [x y]) > () > > user=> (filter (fn [[x y]] (> x y)) (for [x (range 10) y (range 10)] [x y])) > ([1 0] [2 0] [2 1] [3 0] [3 1] [3 2] [4 0] [4 1] [4 2] [4 3] [5 0] [5 1] [5 > 2] [5 3] [5 4] [6 0] [6 1] [6 2] [6 3] [6 4] [6 5] [7 0] [7 1] [7 2] [7 3] [7 > 4] [7 5] [7 6] [8 0] [8 1] [8 2] [8 3] [8 4] [8 5] [8 6] [8 7] [9 0] [9 1] [9 > 2] [9 3] [9 4] [9 5] [9 6] [9 7] [9 8]) > user=> (for [x (range 10) y (range 10) :while (> x y)] [x y]) > ([1 0] [2 0] [2 1] [3 0] [3 1] [3 2] [4 0] [4 1] [4 2] [4 3] [5 0] [5 1] [5 > 2] [5 3] [5 4] [6 0] [6 1] [6 2] [6 3] [6 4] [6 5] [7 0] [7 1] [7 2] [7 3] [7 > 4] [7 5] [7 6] [8 0] [8 1] [8 2] [8 3] [8 4] [8 5] [8 6] [8 7] [9 0] [9 1] [9 > 2] [9 3] [9 4] [9 5] [9 6] [9 7] [9 8]) > user=> > > -- > 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 -- "Test-driven Dentistry (TDD!) - Not everything should be test driven" - Michael Fogus -- ********************************************************** Andreas Koestler, Software Engineer Leica Geosystems Pty Ltd 270 Gladstone Road, Dutton Park QLD 4102 Main: +61 7 3891 9772 Direct: +61 7 3117 8808 Fax: +61 7 3891 9336 Email: andreas.koest...@leica-geosystems.com ************www.leica-geosystems.com************* when it has to be right, Leica Geosystems Please consider the environment before printing this email. -- 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