I confess I'm a bit baffled by this too, but I have a couple suggestions that don't address your problem :)
(drop 2 (range)) is the same as (iterate inc 2), and the same as your convoluted lazy-seq, except that the iterate works here, while for some reason the range doesn't. You might consider zero? instead of = 0. On Oct 11, 1:21 pm, SpiderPig <spiderpi...@googlemail.com> wrote: > Hi, > I tried experimenting with lazy sequences and wrote this program > > (def nums (cons 2 (lazy-seq (map inc nums)))) > (def primes (cons (first nums) > (lazy-seq (->> > (rest nums) > (remove > (fn [x] > (let [dividors (take-while #(<= (* % %) x) > primes)] > (some #(= 0 (rem x %)) dividors)))))))) > > It works fine. However if I redefine nums like this > (def nums (drop 2 (range))) > > It gives me a wrong result > e.g. (take 5 primes) is (2 3 5 7 9) > > I don't see how that can be. > I put in a println to see where the problem is > I inserted this line before the "some" function call. > (println (str "x = " x ", dividors = " (seq dividors))) > If I then define nums as (drop 2 (range)) > and write (take 5 primes) I get this output > > (x = 3, dividors = > x = 4, dividors = (2) > x = 5, dividors = (2) > x = 6, dividors = (2) > x = 7, dividors = (2) > x = 8, dividors = (2) > x = 9, dividors = (2) > x = 10, dividors = (2) > x = 11, dividors = (2) > x = 12, dividors = (2) > x = 13, dividors = (2) > x = 14, dividors = (2) > x = 15, dividors = (2) > x = 16, dividors = (2) > x = 17, dividors = (2) > x = 18, dividors = (2) > x = 19, dividors = (2) > x = 20, dividors = (2) > x = 21, dividors = (2) > x = 22, dividors = (2) > x = 23, dividors = (2) > x = 24, dividors = (2) > x = 25, dividors = (2) > x = 26, dividors = (2) > x = 27, dividors = (2) > x = 28, dividors = (2) > x = 29, dividors = (2) > x = 30, dividors = (2) > x = 31, dividors = (2) > 2 3 5 7 9) > > That just doesn't make any sense. Can anyone explain this? > > btw, I use clojure 1.2.0 -- 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