为什么 Semigroup 有一个 Option 类型并且表现得像 Monoid 中的一个中性元素?
Why does Semigroup has an Option type and behave like a neutral element in 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
也是一个 Semigroup
。 Semigroup
不一定要有身份元素,但每个 Semigroup
也是 Monoid
的每个 Semigroup
总会有一个(在“不知道”这个概念的情况下)。
另一个例子:“整数相加”半群没有正式拥有单位元(零)。它没有定义一个。但是你仍然可以添加 3 + 0 = 3.
为什么 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
也是一个 Semigroup
。 Semigroup
不一定要有身份元素,但每个 Semigroup
也是 Monoid
的每个 Semigroup
总会有一个(在“不知道”这个概念的情况下)。
另一个例子:“整数相加”半群没有正式拥有单位元(零)。它没有定义一个。但是你仍然可以添加 3 + 0 = 3.