OK, can someone tell me what the hell is going on here? (defn alphanumeric? "Given a character, returns true iff the character is alphanumeric. Accented letters and other things that pass Character/isAlphabetic are all counted as alphanumeric." [^long c] (or (Character/isDigit c) (Character/isAlphabetic c)))
... (let [^String s "foo"] (alphanumeric? (long (.charAt s i)))) Reflection warning, blah blah blah - call to longCast can't be resolved. How do I get rid of reflection here? If I drop the (long ... ) around the charAt call, it doesn't even compile: ClassCastException java.lang.Character cannot be cast to java.lang.Number which is even weirder, as it suggests that the return value from .charAt is being boxed, which it shouldn't be if it's going to go directly into interop or a primitive-taking function. None of the apparent fixes strike me as very attractive here: 1. Get rid of alphanumeric? and just put the or expression everywhere. So much for code readability, DRY, and the vaunted code size efficiency of Lisps. 2. Turn the function into a macro, to avoid the repetition in 1. But now it won't work in (every? alphanumeric? some-string) and wrapping it as #(alphanumeric? %) bloats things, though not as badly as before. 3. definline seems to offer the best of both worlds But still bloats generated bytecode... Even supposing a nicer solution presented itself, the implication that .charAt's return is being boxed is troubling. Is there no way (aside from turning these parts of the code into a Java class full of utility methods) to use char values without boxing, short of (or even) directly passing to interop? Also: is there any way to make something as elegant as (every? alphanumeric? s) that's efficient? Something involving the new reducers, perhaps? It smells like a species of reduction to me... Also: How does one profile in Counterclockwise? Googling for counterclockwise profile clojure didn't bear fruit, and googling for eclipse profile java turned up that there's apparently supposed to be a "Profiling and Logging perspective" which is missing, at least in the Open Perspective dialog in the standalone CCW install (Counterclockwise-0.28.1.STABLE001-win32.win32.x86_64.zip, current as of a few days ago). -- 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.