์ํ์์์ ๋ฒ์ฃผ๋ก ์ ๋ํด ์์๋ณด์. ์ Monad๋ ์ด๋ฐ ํํ๊ฐ ๋ ๊ฒ์ธ๊ฐ?
Monad, Category Theory
- Monad๋ผ๋ ๋จ์ด๋ ํ๋ก๊ทธ๋๋ฐ์์ ํ๋๋ ๋จ์ด๊ฐ ์๋๋ค.
- ์ํ์์์ ๋ฒ์ฃผ๋ก ์์ ์ ๋๋ ๋จ์ด์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ์ Monad๋ ์ํ์ Monad์ ๋ฐ์ ํ ๊ด๊ณ๊ฐ ์๋ค.
- ํ๋ก๊ทธ๋๋ฐ์์์ Monad๋ Type Category Monad๋ผ๊ณ ํ๋ ํน๋ณํ ๋ชจ๋๋์ ๋ถ๊ณผํ๋ค.
- ์ํ์ ๊ฐ๋ ์ ์์์ผ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋๋๋ฅผ ๋ฐฐ์ธ ์ ์๋ ๊ฒ์ ์๋๋ค.
์ ์๋ฉด ์ข์๊ฐ 1
- ๊ทธ๋ผ ์ ๋ฐฐ์ฐ๋๊ฐ?
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ชจ๋๋ ๊ฐ๋ ์ ํตํฉ์์ผ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ ๊ฐ๋ ์ ์๋ค๋ฉด, ํ์ ๊ฐ๋ ์ ์ฝ๊ฒ ์ดํด๋๊ธฐ ๋ง๋ จ์ด๋ค.
- ๋ชจ๋๋๋ผ๋ ์์ด๋์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ตฌํํ๋ ๋ฐฉ์์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด ๋ค์ํ ํํ๋ก ๊ตฌํ๋ ๊ฒ์ ๋ณด๊ณ ๋ฐฐ์ฐ๋ฉด ์คํ๋ ค ํผ๋์ค๋ฌ์ธ ๋๊ฐ ๋ง์ ๊ฒ์ด๋ค.
- ๊ทธ๋ณด๋ค ๋ ์์ ๊ฐ๋ ์ ๋ํด ์ดํด๋ฅผ ํ๊ณ , ์ด ๊ฐ๋ ์ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฒ์ง์ ๋ง๊ฒ ๊ตฌํํด์ ์ ๊ณตํ๋ค๊ณ ์ดํดํ๋ ๊ฒ์ด ๋ณด๋ค ์ข๋ค.
- ์ฐ๋ฆฌ๊ฐ ๋ชจ๋๋๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์ ๋ ์ด์ ์ค ํ๋๋ ์ด ๋ค์ํ๊ฒ ๊ตฌํ๋ ํํ๋ฅผ ๋ชจ๋ โ๋ชจ๋๋โ๋ผ ๋ถ๋ฅด๋๋ฐ์ ์ค๋ ํผ๋์ด๋ค.
- ์ง๊ธ๊น์ง๋ ์กฐ๊ธ๋ ์ฌ์ด ์ดํด๋ฅผ ์ํด Swift ์ธ์ด๋ฅผ ๊ฐ์ ธ์ ์ค๋ช ํ์ง๋ง, ๋ณธ๊ฒฉ์ ์ผ๋ก ์ํ์ ์๋ฐํ ์ ์๋ฅผ ๋ฐฐ์๋ณด๋๋ก ํ๋ค.
- ๊ทธ ์ดํ ๊ฐ๊ธฐ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ตฌํํ ๋ฐฉ๋ฒ์ ๋ณธ๋ค๋ฉด, ๋ค์ํ ํํ๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฒ์ผ๋ก ๋ณด์ด๊ฒ ๋ ๊ฒ์ด๋ค.
์ ์๋ฉด ์ข์๊ฐ 2
- ๋ ํ๋ ์ฅ์ ์ด ์๋ค๋ฉด, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์์ ๊ณ ๊ธ ๊ธฐ์ ์ โ์นดํ ๊ณ ๋ฆฌ ์ด๋ก โ์ ๊ธฐ๋ฐ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ฒฐ๊ตญ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์์ฒด์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ธ์ ๊ฐ๋ ๊ณ ๊ธ ๊ฐ๋ ๋ ๋ฐฐ์์ผ ํ๋ค.
Monad
๋ ์นดํ ๊ณ ๋ฆฌ ์ด๋ก ์ ๊ธฐ๋ฐ์ ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ค ๋๋ฒ์งธ๋ก ์ฌ์ด ๊ฐ๋ ์ด๋ค (?)- ์ฒซ๋ฒ์งธ๋
Functor
- ์ฒซ๋ฒ์งธ๋
- ์ด ๋ค์์ผ๋ก ์นดํ
๊ณ ๋ฆฌ ์ด๋ก ์์ ์ ๋๋ ๋ค๋ฅธ ๊ฐ๋
๋ค์ ๋ฐฐ์ฐ๋ ค๋ฉด
Monad
๋ฅผ ์นดํ ๊ณ ๋ฆฌ ์ด๋ก ๊ณผ ์ฐ๊ฒฐ์ง์ด ์ดํดํด์ผ ํ๋ค.- ์ง๊ธ๊น์ง๋ ์ด์ฐ๋ณด๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ๊ตญํ๋์ด
Monad
๋ฅผ ๋ฐฐ์ด ๊ฒ.
- ์ง๊ธ๊น์ง๋ ์ด์ฐ๋ณด๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ๊ตญํ๋์ด
์นดํ ๊ณ ๋ฆฌ ์ด๋ก ๊ฐ๋
- Functor
- Monad
- Adjunction
- Comonad
- Limit
- Applicative
์ผ๋ง๋ ์ด๋ ค์ด๊ฐ?
- ๋ณดํต ๋ค๋ค ์ด๋ ต๋ค๊ณ ํ๋ค.
- ๊ทธ๋ฐ๋ฐ ๊ทธ ์ด๋ ต๋ค๋ ๊ฒ์ด โ์ถ์์ โ์ด์ด์ ๊ทธ๋ ๊ฒ ๋ค๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ๊ทธ๋๋ง ์์์ ์๋ค์ ๋ณด๊ณ ์์ผ๋ ๊ทธ๋งํผ ์ด๋ ต๊ฒ ๋ค๋ฆฌ์ง๋ ์์ ๊ฒ์ด๋ค.
- ์ํคํผ๋์์์ ๋ค๊ณ ์จ ์ฌ์ง์ด๋ค.
- ๊ทธ๋ฆผ๋ณด๋ฉด ์ด๋์ ๋ง์ด ๋ณธ ๊ฒ ๊ฐ์ง ์์๊ฐ?
- ์ด์ ๋์ ๊ฐ๋ ์ ์ดํดํ๋ค๋ฉด ๋์ ํด๋ณผ๋ง ํ๋ค.
์ ์ด๋ ค์ด๊ฐ?
- ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ฐ๋ ๊ฐ๋ ์ ํ์ค ์ธ๊ณ์ ๊ฐ๋ ์ด ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ๋ค ์ ์๊ณ , ๊ทธ๋ฌ๋ฉด ์ดํด๊ฐ ๋น ๋ฅด๋ค.
- ํ์ง๋ง ์นดํ ๊ณ ๋ฆฌ ์ด๋ก ์ ๊ฐ๋ ์ ๊ทธ ์ถ์ํ๋ ๊ฒ์ ๋ค์ ๋ชจ์ ์ถ์ํํ ๊ฒ๋ค์ด๋ค.
- ์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ ์ฌ๊ณ ๊ฐ ์๋, ๊ดํ ์ด์ํ ๋น์ ๋ฅผ ๋ค์๋ค๊ฐ ๋ ํผ๋์ค๋ฌ์ธ ์ ์๋ค.