Следующее не работает по понятным причинам .
(defprotocol Monoid
(mappend [a b])
(mzero []))
mzero
не имеет аргументов, а методы с нулевыми аргументами не разрешены (или не имеют смысла) в протоколах. В Haskell или Scala, где диспетчеризация основана на типах, а не на значениях, это не проблема.
Каким будет правильный способ осмысления и написания протокола Monoid
в Clojure?