monoid在代数里面 The prefix "mon-" means "one"
主要三个特性
1.包含一种类型A
2.接受两个参数A的F,进行操作后并返回类型A
3.标识该类型的身份值(我把它理解为进行OP操作类型的底)
所以它的trait
trait Monoid[A] {
def op(a1: A, a2: A): A
def zero: A
}
例如
val stringMonoid = new Monoid[String] {
def op(a1: String, a2: String) = a1 + a2
def zero = ""
}