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

Reply via email to