๋ชจ๋‚˜๋“œ(Monad)์˜ ํ•ญ๋“ฑ์„ฑ(identity law)์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ชจ๋‚˜๋“œ๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ์ค‘์š”ํ•œ ํŠน์„ฑ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋‚˜๋“œ๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋‹ค๋ฃจ๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์œผ๋กœ, ๊ฐ’์„ ๊ฐ์‹ธ๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋ชจ๋‚˜๋“œ์˜ ํ•ญ๋“ฑ์„ฑ์€ ๋ชจ๋‚˜๋“œ์˜ ๋™์ž‘์„ ๋ณด๋‹ค ์•ˆ์ •์ ์ด๊ณ  ์ผ๊ด€์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

๋ชจ๋‚˜๋“œ์˜ ํ•ญ๋“ฑ์„ฑ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ด€์ ์—์„œ ์„ค๋ช…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

Left Identity (์™ผ์ชฝ ํ•ญ๋“ฑ์„ฑ)

์–ด๋–ค ๊ฐ’์„ ๋ชจ๋‚˜๋“œ๋กœ ๊ฐ์‹ผ ํ›„์— ํ•ด๋‹น ๋ชจ๋‚˜๋“œ๋ฅผ ํŠน์ • ํ•จ์ˆ˜์— ์ ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ, ๊ทธ ๊ฐ’์„ ๋ฐ”๋กœ ๊ทธ ํ•จ์ˆ˜์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, m์ด๋ผ๋Š” ๋ชจ๋‚˜๋“œ์™€ ํ•จ์ˆ˜ f๊ฐ€ ์žˆ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

flatMap(unit(x), f) == f(x)

์—ฌ๊ธฐ์„œ unit(x)๋Š” ๊ฐ’์„ ๋ชจ๋‚˜๋“œ๋กœ ๊ฐ์‹ธ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. flatMap์€ ๋ชจ๋‚˜๋“œ์˜ ๊ฐ’์„ ํ•จ์ˆ˜์— ์ ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, f๋Š” ์ž„์˜์˜ ํ•จ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Right Identity (์˜ค๋ฅธ์ชฝ ํ•ญ๋“ฑ์„ฑ)

๋ชจ๋‚˜๋“œ์— ๊ฐ’์„ ์ ์šฉํ•œ ๋’ค์— ๋ชจ๋‚˜๋“œ๋ฅผ ๋ฒ—๊ฒจ๋‚ธ ๊ฒฐ๊ณผ์™€, ๊ทธ ๊ฐ’์„ ๋ฐ”๋กœ ๋ชจ๋‚˜๋“œ์— ๊ฐ์‹ธ์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, m์ด๋ผ๋Š” ๋ชจ๋‚˜๋“œ์™€ ํ•จ์ˆ˜ f๊ฐ€ ์žˆ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

flatMap(m, unit) == m

์—ฌ๊ธฐ์„œ unit์€ ๊ฐ’์„ ๋ชจ๋‚˜๋“œ๋กœ ๊ฐ์‹ธ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.