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