Quanto segue non funziona, per ovvi motivi.Come scrivere il protocollo monoid in Clojure?
(defprotocol Monoid
(mappend [a b])
(mzero []))
mzero
ha zero argomenti, e zero metodi argomento non permessi (o non hanno senso) in protocolli. In Haskell o Scala, dove la distribuzione è basata sui tipi piuttosto che sul valore, questo non è un problema.
Quale sarebbe il modo corretto di concettualizzare e scrivere il protocollo Monoid
in Clojure?
perché ti serve un protocollo piuttosto che un modulo? se si aspettano implementazioni diverse, in che modo haskell deduce quale implementazione è necessaria in un particolare caso d'uso? (Penso che sia una buona domanda, sto solo cercando di inseguire il problema in questione). –
@ andrewcooke Haskell si basa sul tipo statico sul sito di utilizzo. Il metodo chiamato viene risolto staticamente. –
@andrewcooke, cosa significherebbe il modulo nel contesto della tua affermazione? – missingfaktor