Semigroup为什么具有Option类型并表现得像Monoid中的中性元素?

问题描述

为什么Semigroup具有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不必具有标识元素,但每个也是Semigroup的{​​{1}}都将始终具有一个(无需“知道”该概念)。

另一个示例:“整数加法”半组没有正式拥有标识元素(零)。它没有定义一个。但您仍然可以加3 + 0 = 3。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...