Как написать моноидный протокол в Clojure?

Следующее не работает по понятным причинам .

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

mzeroне имеет аргументов, а методы с нулевыми аргументами не разрешены (или не имеют смысла) в протоколах. В Haskell или Scala, где диспетчеризация основана на типах, а не на значениях, это не проблема.

Каким будет правильный способ осмысления и написания протокола Monoidв Clojure?

9
задан missingfaktor 26 May 2012 в 05:05
поделиться