Lo siguiente no funciona, por razones obvias.Cómo escribir el protocolo monoide en Clojure?
(defprotocol Monoid
(mappend [a b])
(mzero []))
mzero
tiene cero argumentos, y no se permiten los métodos de argumento cero (o no tienen sentido) en los protocolos. En Haskell o Scala, donde el despacho 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 el protocolo Monoid
en Clojure?
¿por qué es necesario que sea un protocolo en lugar de un módulo? si está esperando implementaciones diferentes, entonces, ¿cómo podría Haskell inferir qué implementación se requiere en un caso de uso particular? (Creo que es una buena pregunta, solo estoy tratando de buscar el tema en cuestión). –
@andrewcooke Haskell infiere basado en el tipo estático en el sitio de uso. El método que se llama se resuelve estáticamente. –
@andrewcooke, ¿qué significaría el módulo en el contexto de su declaración? – missingfaktor