All -
I'm trying to generate a lazy sequence of primes using Erastosthenes Sieve
(from Abelson & Sussman) and am encountering some issues with lazy sequence.
Here's what I have:
---
(defn divisible?
[input numerator]
(= 0 (mod input numerator)))
(defn sieve
[stream]
(lazy-seq
(cons
(first stream)
(sieve (filter #(not (divisible? % (first stream))) (rest stream))))))
(def primes (sieve (iterate inc 2)))
---
This is fine now when I:
=> (take 5 (drop 1000 primes))
(7927 7933 7937 7949 7951)
But when I:
=> (take 5 (drop 4000 primes))
StackOverflowError clojure.lang.LazySeq.sval (LazySeq.java:40)
--
I understand how the StackOverflow occurs with the filter on the
recursively generated sequence... however I can't think of a way to make
this work..
I'm pretty new to clojure so I'm not very familiar with all of the language
features; is there some tool to help me realize this or should I just go
about the implementation in a different way?
Thanks - have a great morning!
Matty
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.