I have the following function:
    (defn lucky-numbers
      "Lucky numbers from 1 up-to upto-value.
      1 <= upto-value <= 10.000.000
      http://en.wikipedia.org/wiki/Lucky_number";
      ; doc-string and pre-condition should match
      [upto]
      {:pre [(>= upto 1)
             (<= upto (* 10 1000 1000))]}
      (if (< upto 3)
          ; for 1 and 2 the algorithm does not work, so return value
manually
          (list 1)
        (loop [coll (range 1 (inc upto) 2), survivor-idx 1]
          (let [i (nth coll survivor-idx)]
            (if (> (count coll) i)
                (recur (drop-every-nth coll i) (inc survivor-idx))
              coll)))))

​In this function I limit the maximum value that ​can be given to the
function. But this is pure for performance reasons. So I would like to have
the possibility to disable it. I read somewhere that you can use types for
this. Sadly I do not remember where.

At the moment the following:
    (lucky-numbers 10000001)
gives:
    AssertionError Assert failed: (<= upto (* 10 1000 1000))
user/lucky-numbers

But I would like the following to be executed:
    (lucky-numbers :no-max-check 10000001)

​How would I implement that?

-- 
Cecil Westerhof

-- 
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
--- 
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to