I have two different functions for the same functionality. I would like to
share the pre-conditions between them.

The general function is:
    (defn test-lucky-numbers-general
      "Performance test of lucky numbers general"
      [fn desc nr]
      {:pre [(>= nr 1)
             (<= nr 7)]}
      (println desc)
      (dotimes [i 25]
        (let [lucky (time (fn 10))]))
      (println)
      (dotimes [i nr]
        (time
          (let [upto (int (Math/pow 10 (inc i)))]
            (printf "With upto %d there are %d lucky numbers\n" upto (count
(fn upto)))))
        (println)))


The functions themselves are:
​    (defn test-lucky-numbers
      "Performance test of lucky numbers"
      ([]
       (test-lucky-numbers 6))
      ([nr]
       (test-lucky-numbers-general lucky-numbers "Testing performance
lucky-numbers" nr)))
and:
    (defn test-lucky-numbers-3
      "Performance test of lucky numbers (3)"
      ([]
       (test-lucky-numbers-3 6))
      ([nr]
       (test-lucky-numbers-general lucky-numbers-3 "Testing performance
lucky-numbers-3" nr)))
​

And to call all test functions I have:
    (defn test-lucky-numbers-all
      "Test all lucky number performance"
      ([]
       (test-lucky-numbers-all 6))
      ([nr]
       (test-lucky-numbers nr)
       (test-lucky-numbers-3 nr)))


When I call a function with the wrong parameter, I get an error from
test-lucky-numbers-general, but I need it from the calling function. I
could copy the pre-condition to all functions, but that is not really DRY.
Is there a way I can share the pre-conditions with all (at this moment)
four functions?


The first dotimes in test-lucky-numbers-general is to warm-up the JVM. Is
there a way to know if this is already done for the function that is given?
Then it could be done only when necessary.

-- 
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