为什么半群具有Option类型,并且表现得像Monoid中的中性元素



为什么半群有一个Option类型,而None表现得像Monoid中的中性元素?

val two: Option[Int] = Option(2)
val n: Option[Int] = None
n |+| two should be(Some(2))//why do we have the opportunity to do this?
two |+| n should be(Some(2))//n look like neutral here
Semigroup[Option[Int]].combine(Option(1), None) should be(Some(1))//why does semigroup has it?

每个Monoid也是一个SemigroupSemigroup不必具有同一元素,但每一个也是MonoidSemigroup都将始终具有一个(在不"知道"概念的情况下(。

另一个例子是:;整数相加";半群不具有形式上的单位元(零(。它没有定义一个。但是您仍然可以添加3+0=3。

最新更新