моноид из полугруппы
Jun. 10th, 2012 04:41 pmВ разных там WriterMonad требуется, чтобы внутре был моноид, и возникает иной раз такое ощущение, что и везде нужен моноид. Ан нет, бывает и полугруппы достаточно.
Скажем,
Так получается, что тот нуль, что был в T раньше, теперь не будет нулём.
Та же фигня и с мапредьюсом - в качестве типа накапливаемых значений берётся полугруппа, а нуль присоединяется внешний.
Это, заодно, ответ на мой старый вопрос - шо за моноид в мапредьюсе. Да вот этот, с присоединённым нулём.
Скажем,
Option[T]
, где Т - полугруппа, можно считать моноидом - к полугруппе присоединяется внешний нуль.def sum(maybeX; Option[T])(maybeY: Option[T]) = maybeX match { case Some(x) => maybeY match { case Some(y) => Some(x+y) case None => Some(x) } case None => maybeY }
Так получается, что тот нуль, что был в T раньше, теперь не будет нулём.
Та же фигня и с мапредьюсом - в качестве типа накапливаемых значений берётся полугруппа, а нуль присоединяется внешний.
Это, заодно, ответ на мой старый вопрос - шо за моноид в мапредьюсе. Да вот этот, с присоединённым нулём.