On Wed, Jan 25, 2012 at 3:34 PM, Ben Mabey <b...@benmabey.com> wrote:

> Hi again,
>
> Is it possible to add primitive type hints to protocols (as the return
> type)?  My attempt below failed:
>
> (definterface IPrimitiveTester
>  (getType [^int x])
>  (getType [^long x])
>  (getType [^float x])
>  (getType [^double x])
>  (getType [^Object x]))
>
> (deftype PrimitiveTester []
>  IPrimitiveTester
>  (getType [this ^int x] :int)
>  (getType [this ^long x] :long)
>  (getType [this ^float x] :float)
>  (getType [this ^double x] :double)
>  (getType [this ^Object x] :object))
>
>
> (defmacro primitive-type [x]
>  `(.getType (PrimitiveTester.) ~x))
>
> (defmacro pt [x]
>  `(.getType (PrimitiveTester.) ~x))
>
> (defprotocol Foo
>  (bar [foo]))
>
> (deftype Dog []
>  Foo
>  (bar ^double [_] 42.0))
>
> (pt (bar (Dog.))) ; => :object
>
> (I also tried adding the hint to the protocol definition but that resulted
> in a compiler error.)
>
> In my googling the only other reference to protocols with primitive
> support was an unanswered question on this mailing list last November[1].
>  Hopefully my question gets a little more attention...
>
> (Pardon all these primitive type questions but I'm in the process of
> upgrading a 1.2 app to 1.3 and trying to convert some of our numeric heavy
> java code into clojure in the process.)
>
> Thanks,
> Ben
>
> 1. http://groups.google.com/**group/clojure/browse_thread/**
> thread/6015aacd6e8d0d20/**ccca98bea3970240<http://groups.google.com/group/clojure/browse_thread/thread/6015aacd6e8d0d20/ccca98bea3970240>
>

It's not currently supported. If you're interested in how to best implement
fast numeric code I suggest looking at test.benchmark.

David

-- 
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

Reply via email to