You have reused a name already bound in the `protocols` namespace. You cannot bind two things to the same var.
On the other hand, precisely because namespaces are not complected with protocol dispatch, you can easily free the `get` identifier for your purposes by doing exactly what you would do if you wanted to reuse the identifier in some other way: (ns protocols (:refer-clojure :exclude [get])) (defprotocol P (get [_])) (ns app) (defrecord R [] protocols/P (protocols/get [_] 42)) You can now call `protocols/get` by namespace qualification (or by importing it into the current namespace): user> (in-ns 'app) app> (protocols/get (->R)) 42 Matthias -- 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