Как написать моноидный протокол в Clojure?

Следующее не работает по понятным причинам.

(defprotocol Monoid
  (mappend [a b])
  (mzero []))

mzero имеет нулевые аргументы, а методы с нулевым аргументом не разрешены (или не имеют смысла) в протоколах. В Haskell или Scala, где диспетчеризация основана на типах, а не на значениях, это не проблема.

Какой будет правильный способ осмысления и написанияMonoid протокол в Clojure?

Ответы на вопрос(1)

Ваш ответ на вопрос