모나드(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은 값을 모나드로 감싸는 역할을 하는 함수입니다.