Como escrever o protocolo monoid no Clojure?
O seguinte não funciona, por razões óbvias.
(defprotocol Monoid
(mappend [a b])
(mzero []))
mzero
tem zero argumentos, e os métodos de argumento zero não são permitidos (ou não fazem sentido) nos protocolos. Em Haskell ou Scala, onde o despacho é baseado em tipo e não em valor, isso não é um problema.
Qual seria a maneira correta de conceituar e escreverMonoid
protocolo no Clojure?