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

>  On 1/25/12 1:41 PM, David Nolen wrote:
>
> 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
>>
>
>  It's not currently supported.
>
>  Do you know if support is planned (i.e. a ticket exists)?
>

I don't think support is planned and given that it hasn't been done yet I
imagine that it's challenging / impossible. You have definterface and prim
fns in the mean time.

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