我正在Scalaz中深入探索Monoid的实现。如果您在Monoid上定义附加操作,我碰到|+|运营商应该来开箱即用。该算子的定义在SemigroupSyntax。该班通过Semigroup获得Monoid。 检查这三个类之后,我有一个重要的问题 - 究竟是如何从SemigroupSyntax实现/** Wraps a value `self` and provides methods relat
我通过在斯卡拉的书,并在幺章函数式编程读数的高Kinded类型,他们谈论一个Monoid接口,看起来像这样: trait Monoid[A] {
def op(a1: A, a2: A): A
def zero: A
}
后来,他们定义特定的含半幺群通过扩展这个接口实例。例如, val intMonoid = new Monoid[Int] {
...
}
val lis
比方说,我有如下一个Monoid特点: trait Monoid[A] {
def combine(a1: A, a2: A): A
def identity: A
}
现在,如果我想要写这个的optionMonoid,我可以写这样的: val optionMonoid1 = new Monoid[Option[A]] {
def combine(a1: Opt