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

Reply via email to