Hi folks, Is there any way to make a function that takes primitive parameters? It seems you can't, but I might be missing something. I have the following code (a start to playing with mandelbrot sets):
(defn step [x0, y0, xn, yn] (let [xm (+(-(* xn xn)(* yn yn)) x0) ym (+(* 2 xn yn) y0) ] [xm ym] ) ) (defn try_to_solve [x0, y0, xn, yn, n, max_n] (let [m (+ n 1) [xm ym] (step x0 y0 xn yn) zm (+(* xm xm)(* ym ym)) ] (cond (> zm 2.0) m (>= n max_n) [x0, y0, xm, ym, m, max_n] true (recur x0, y0, xm, ym, m, max_n) ) ) ) This works fine (it's my first clojure code, so I'm sure there are things I could do better, but I'm happy with it as a start) However, I want to do this a lot, so I was trying to coerce the paramters to primitive doubles. It seems you can't write: (defn step [#^double x0, #^double y0, #^double xn, #^double yn] and from comments I've seen before, I get the impression if I use type hinting, clojure will use Doubles and boxing, which is a speed overhead I don't want. I get the impression I can rewrite "try_to_solve" to use a loop/recur, and then can use primitives - but I can't see any way to make calls to "step" use primitives, short of inlining the function... - Korny -- Kornelis Sietsma korny at my surname dot com --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---