为什么Semigroup有一个Option类型,而在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?发布于 2020-09-03 03:46:33
每个Monoid也是一个Semigroup。Semigroup不一定要有标识元素,但同时也是Monoid的每个Semigroup都会有一个标识元素(不需要“了解”这个概念)。
另一个例子:“整数的加法”半群没有形式上的单位元(零)。它没有定义一个。但是你仍然可以加上3 +0=3。
https://stackoverflow.com/questions/63712312
复制相似问题