You need to name the protocol before the method implementations.
That's why the "PersistentList cannot be cast to Symbol" message --
the compiler's expecting a protocol (or interface) symbol after [r].
And, as the examples on
http://clojure.org/protocols show, you need to
define the different arities of method-two separately:
(defrecord record-two [r]
protocol-two
(method-two [x] (str x))
(method-two [x y] (str x ":" y)))
Also note that all the examples use capitalized names for protocols
and records. And I'm dubious about the hyphens in those names, too. I
would have gone with ProtocolTwo (or Protocol2) and Record2.