Clojure's protocols are basically the dynamic language equivalent of type classes.
> I get the impression you'd need to explicitly create a new type class?
In the same way you need to use defprotocol in Clojure. You can implement existing type classes on types without defining a new type class.