On Tue, Mar 9, 2010 at 1:44 AM, Timothy Pratley <timothyprat...@gmail.com> wrote: > On 9 March 2010 04:03, Jonathan Shore <jonathan.sh...@gmail.com> wrote: >> (defn fib [#^Integer a] >> (if (< a 2) >> a >> (+ (fib (- a 1)) (fib (- a 2))))) >> I'm just learning, so I may have overlooked something that mitigates or >> otherwise avoids dispatch. > > You might want to experiment with something like > (defn fib [a] > (let [ia (int a)] > ..........)) > > I know that seems a little weird but anything passed into or out of a > function gets boxed to an object type. (int a) coerces to a primitive > int which for some operations has much better performance.
When using primitive locals as Tim is suggesting, remember that currently numeric literals are boxed by default as well. So you actually want (< ia (int 2)) and so on as well. --Chouser http://joyofclojure.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 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