모나드(monad)가 대체 뭘까?

Jiwon Lee·2021년 8월 24일
1
post-thumbnail

스위프트 책을 공부하면서 이게 대체 뭔 소리지? 싶었던 건 굉장히 드문 일이었는데... 오늘 공부하면서 '모나드'라는 개념을 이해하는 게 너무나 어려웠다. 왜냐면 낯선 단어에 처음 듣는 내용이었기 때문... 😒 회사에서 짬 시간에 공부를 하기 때문에 바로 찾아보긴 어려웠고 그냥 아 그런가보다... 하고 필기 정리만 했다.

모나드
= 자신의 컨텍스트와 같은 형태로 맵핑할 수 있는 함수 객체
= 닫힌 함수 객체

💊 모나드의 사전적 정의

퇴근하고 집에 와서... 할 일을 좀 하고 궁금했던 것에 대해 더 찾아보려는데 더 미궁 속으로 빠져드는 기분이다. 😢 가방 끈이 짧아서 그런지 용어 자체도 처음 들었는데, 알고 보니 굉장히 다양한 분야에서 사용되는 용어였다.

범주론(範疇論, 영어: category theory)은 수학 용어로, 수학적 구조와 그들 간의 관계를 범주라는 추상적인 개념으로써 다루는 이론
-> 여기서의 모나드는 내부 함자 범주의 모노이드 대상이라고 한다... 대충 모나드라는 개념이 여기서 온 것까지는 이해를 했다!

🔑 내가 이해한 내용

열심히 서치하던 끝에 엄청나게 자세하고, 친절하고, 깔끔한 글들을 많이 발견했다. 근데... 사실 아직 정확히는 모르겠다 ㅎㅎ 나는 쓰레기인가... 라는 생각이 들었지만 다들 어려워 하는 개념인 것 같으니까 기운 내보도록 해야겠다. 크큭... 사실 기운 안 난다.

모나드는 함수 내부에서 발생할 수 있는 사이드이펙트를 결과 집합과 함께 포함하는 타입이다. 함수 실행 결과를 항상 모나드로 반환하여 순수 함수 성질을 잃지 않게 하는 것!

모나드는 제네릭 프로그래밍에서 데이터를 추상화 하듯이, 연산 자체를 추상화하기 위해 사용된다. 그리고 추상화된 연산은 입력과 출력 모두 모나드로 흘러가기 때문에 무한대로 합성될 수 있다.

🔖 참조한 글

profile
노는 게 제일 좋은데 공부는 하고 싶어요 😗

0개의 댓글