Skip to content

Latest commit

 

History

History
61 lines (41 loc) · 1008 Bytes

Introduction.md

File metadata and controls

61 lines (41 loc) · 1008 Bytes

Chapter 2 Monoids and Semigroup

MonoidSemigroup type class 可用于累加或组合。

整数相加

整数的相加操作,接受两个整数,产出一个:

1 + 2

相加操作具有 单位元 0,对于任意整数 a 满足 a + 0 == 0 + a == a

2 + 0
0 + 2

相加操作还满足 结合律,即:

(1 + 2) + 3 == 1 + (2 + 3)

整数相乘

相乘操作的 单位元 是 1:

1 * 3 == 3
3 * 1 == 3

相乘也满足 结合律

(1 * 2) * 3 == 1 * (2 * 3)

字符串拼接

也可以对字符串做 加法,其中加法具体操作为 拼接

"One" ++ "Two"

拼接的 单位元 是空字符串:

"" ++ "Hello" == "Hello"
"Hello" ++ "" == "Hello"

拼接也满足 结合律

("One" ++ "Two") ++ "Three" == "One" ++ ("Two" ++ "Three")
  • 本例使用 ++ 做拼接,而不是 +,是为了保持与 Sequence 的一致性