python 에서의 monoid

limseok(34)
Published in
#python
Words
47
Reading
1 min
Listen
Play
9y

우선 monoid 의 수학적 정의를 살펴보자.
아래의 3가지를 모두 만족 한다면 '집합 S 를 항등원이 e 인 ⊗ 연산에 대해서 monoid' 라고 한다.

1. 집합 S 에 속한 모든 a 와 b 에 대해 a ⊗ b 가 정의되고 이 결과 또한 집합 S 에 속한다.
2. 집합 S 에 속한 모든 a 와 b, c 에 대해 (a ⊗ b) ⊗ c = a ⊗ (b ⊗ c) 가 성립한다. (결합 법칙)
3. 집합 S 에 속한 원소 e 에 대해 집합 S 에 속한 모든 a 는 a ⊗ e = e ⊗ a = a 가 성립한다.

따라서 monoid 라면 대(big) operator 개념을 생각해볼 수 있다.

이걸 응용한 python 시퀀스에 대한 대(big) operator 구현이
map / filter / functools.reduce 등등이다.


my_sum = lambda S: functools.reduce(lambda x, y: x + y, S, 0)
my_product = lambda S: functools.reduce(lambda x, y: x * y, S, 1)
my_cat = lambda S: functools.reduce(lambda x, y: x + y, S, "")
python 에서의 monoid | Ecency