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

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