¿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?