Hello, I'm trying to learn Clojure so I'm making some simple programs. One of them is prime sieve which looks like this:
(defn filter-primes [nums] "Leave only numbers not divisable by the first element in the list" (filter (fn [x] (not= 0 (mod x (first nums)))) (rest nums))) (defn sieve [max-num] "Calculate all primes between 1 and max-num inclusive" (loop [nums (range 2 (inc max-num)) primes (list)] (if (empty? nums) (reverse primes) (recur (filter-primes nums) (conj primes (first nums)))))) The problem is that calling for example (sieve 10000) already twrows StackOverflowError, which is kind of suprising to me, because I use the loop...recure. I'm not looking for an anwser with a totally different approach, but how to make this recursive approach work. -- 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