Yes you need to provide an implementation of the protocol for the type
directly or a parent interface.
What the initial author says is that you can do that on any type, even
on an outside library, without changing the initial Type source code
or recompile it. You can do that at runtime and
I recently read the article
http://www.colourcoding.net/blog/archive/2011/10/25/clojure-is-a-get-stuff-done-language.aspx?utm_source=feedburnerutm_medium=feedutm_campaign=Feed%3A+ColourCoding+%28Colour+Coding%29
and it mentions in the Better than a better java section, that Compojure
defines a