So, is there a way to type hint on cb that it has a function accepting
a long argument?

On Apr 25, 12:55 am, Stuart Sierra <the.stuart.sie...@gmail.com>
wrote:
> I'm taking a guess here: The compiler doesn't know the type signature of
> `cb` when compiling `foo`, so it's going to use the IFn.invoke(Object)
> signature. Clojure's type inference is only local, and it won't assume that
> a primitive-type signature is available for an arbitrary function.
>
> So there's probably some extra typecasting going on when `fn` is
> type-hinted to a primitive.
>
> In general, type-hinting to primitive types doesn't do you any good in the
> presence of higher-order functions like `map`.
>
> -S
>
>
>
>
>
>
>
> On Wednesday, April 24, 2013 11:35:11 AM UTC-4, Alice wrote:
>
> > (defn foo [^long l cb] (cb l))
>
> > (time
> >   (dotimes [n 1000000]
> >     (foo n (fn [l] nil))))
>
> > (time
> >   (dotimes [n 1000000]
> >     (foo n (fn [^long l] nil))))
>
> > "Elapsed time: 7.861 msecs"
> > "Elapsed time: 11.770973 msecs"
>
> > Why is the latter slower?

-- 
-- 
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/groups/opt_out.


Reply via email to