FizzyElt / functional-programming

帶你探索 functional programming
https://fizzyelt.github.io/functional-programming/
MIT License
25 stars 0 forks source link

Semigroup #9

Closed FizzyElt closed 1 year ago

FizzyElt commented 1 year ago

Semigroup

從 Magma 基礎上滿足結合律(associativity)的特性,我們稱為 Semigroup。 假設我們有 $(S,\ \circ)$,對於所有 $S$ 中的 $a,\ b,\ c$ ,滿足以下等式

$$ (a\ \circ \ b)\ \circ\ c = a\ \circ \ (b\ \circ\ c) $$

加法

正整數加法結合律 $(\mathbb{N} ,\ +)$

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

乘法

正整數加法結合律 $(\mathbb{N} ,\ \times)$

$$ (1 \times 2) \times 3 = 1 \times (2 \times 3) $$

字串串接

$(S,\ ++)$

$$ (a ++\ b)\ ++ \ c = a ++\ (b\ ++\ c) $$

函數組合也擁有結合律特性

$(A,\ \circ)$

$$ (h\ \circ \ g)\ \circ\ f = h\ \circ \ (g\ \circ\ f) $$

參考連結

dannypsnl commented 1 year ago

semigroup 加上 identity 的限制即是 monoid

FizzyElt commented 1 year ago

我應該會從 Monoid 那裡連結過來