¿Cómo escribir el protocolo monoide en Clojure?

Lo siguiente no funciona, por razones obvias.

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

mzero tiene cero argumentos y los métodos de cero argumentos no están permitidos (o no tienen sentido) en los protocolos. En Haskell o Scala, donde el envío se basa en el tipo y no en el valor, esto no es un problema.

¿Cuál sería la forma correcta de conceptualizar y escribir?Monoid Protocolo en Clojure?

Respuestas a la pregunta(1)

Su respuesta a la pregunta