Hey all, I'm writing a function called barr= that looks just like clojure.core/=, but uses java.util.Arrays/equals instead of equiv. To speed up the function I tried adding type hints to both the function definition and the 2-argument inlined version. Type hinting the inline function threw an exception that makes me think the compiler is interpreting Here's the gist: https://gist.github.com/1551640
Type hints on the function definition work great: (defn barr= ([x] true) ([^bytes x ^bytes y] (java.util.Arrays/equals x y)) ([x y & more] (if (barr= x y) (if (next more) (recur y (first more) (next more)) (barr= y (first more))) false))) But hinting the inline version causes an exception: (defn barr= {:inline-arities #{2} :inline (fn [x y] `(let [^bytes x# ~x ^bytes y# ~y] (java.util.Arrays/equals x# y#)))} ([x] true) ([^bytes x ^bytes y] (java.util.Arrays/equals x y)) ([x y & more] (if (barr= x y) (if (next more) (recur y (first more) (next more)) (barr= y (first more))) false))) ;; CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: ;; clojure.core/bytes, compiling:(NO_SOURCE_PATH:54) The compiler seems to be interpreting this type hint as a var. Are type hints not allowed inside of inline definitions for some reason? Cheers, -- Sam Ritchie, Twitter Inc 703.662.1337 @sritchie09 (Too brief? Here's why! http://emailcharter.org) -- 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