In order to do that you would have to reach to the interface behind the protocol...observer this:

user=> (defprotocol P (f1 [_] nil))
P
user=> P
{:on-interface user.P, :on user.P, :sigs {:f1 {:doc "YES!", :arglists ([_]), :name f1}}, :var #'user/P, :method-map {:f1 :f1}, :method-builders {#'user/f1 #<user$eval695$fn__696 user$eval695$fn__696@5dc4352a>}}
user=> (defn ftest [^P arg] (str arg))
CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: P, compiling:(NO_SOURCE_PATH:1:1)
user=> (defn ftest [^user.P arg] (str arg))
#'user/ftest
user=> (ftest :foo)
":foo"

So, yes the compiler will let you do it but it won't actually enforce it! May I ask why would you want to do this? Are you hitting any reflection?

Jim



On 12/01/14 12:38, bob wrote:
Hi,

Is it possible to add type hint (the type is protocol)  to funs?

for example:

(defprotocol IProtocol
 (f1 []))

can we define fn like this?
(defn ftest
 [^IProtocol arg]
 (.toString arg))
--
--
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.

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