我正在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