수학에서의 범주론에 대해 알아보자. 왜 Monad는 이런 형태가 된 것인가?
Monad, Category Theory
- Monad라는 단어는 프로그래밍에서 태동된 단어가 아니다.
- 수학에서의 범주론에서 유래된 단어이다.
- 그렇기 때문에 프로그래밍의 Monad는 수학의 Monad와 밀접한 관계가 있다.
- 프로그래밍에서의 Monad는 Type Category Monad라고하는 특별한 모나드에 불과하다.
- 수학적 개념을 알아야 프로그래밍의 모나드를 배울 수 있는 것은 아니다.
왜 알면 좋은가 1
- 그럼 왜 배우는가?
- 프로그래밍 언어의 모나드 개념을 통합시켜주기 때문이다.
- 상위 개념을 안다면, 하위 개념은 쉽게 이해되기 마련이다.
- 모나드라는 아이디어를 프로그래밍 언어에서 구현하는 방식은 여러가지가 있다.
- 그렇기 때문에 이 다양한 형태로 구현된 것을 보고 배우면 오히려 혼란스러울 때가 많을 것이다.
- 그보다 더 상위 개념에 대해 이해를 하고, 이 개념을 다양한 프로그래밍 언어에서 처지에 맞게 구현해서 제공한다고 이해하는 것이 보다 좋다.
- 우리가 모나드를 이해하기 어려웠던 이유중 하나는 이 다양하게 구현된 형태를 모두 “모나드”라 부르는데서 오는 혼란이다.
- 지금까지는 조금더 쉬운 이해를 위해 Swift 언어를 가져와 설명했지만, 본격적으로 수학의 엄밀한 정의를 배워보도록 한다.
- 그 이후 각기다른 프로그래밍 언어에서 구현한 방법을 본다면, 다양한 형태가 모두 같은 것으로 보이게 될 것이다.
왜 알면 좋은가 2
- 또 하나 장점이 있다면, 함수형 프로그래밍 언어에서의 고급 기술은 “카테고리 이론”에 기반을 두기 때문이다.
- 결국 함수형 프로그래밍 자체에 관심이 있다면 언젠가는 고급 개념도 배워야 한다.
Monad는 카테고리 이론에 기반을 둔 프로그래밍 개념중 두번째로 쉬운 개념이다 (?)- 첫번째는
Functor
- 첫번째는
- 이 다음으로 카테고리 이론에서 유래된 다른 개념들을 배우려면
Monad를 카테고리 이론과 연결지어 이해해야 한다.- 지금까지는 어찌보면 프로그래밍에 국한되어
Monad를 배운 것.
- 지금까지는 어찌보면 프로그래밍에 국한되어
카테고리 이론 개념
- Functor
- Monad
- Adjunction
- Comonad
- Limit
- Applicative
얼마나 어려운가?
- 보통 다들 어렵다고 한다.
- 그런데 그 어렵다는 것이 “추상적”이어서 그렇게 들릴 가능성이 높다.
- 그나마 앞에서 예들을 보고 왔으니 그만큼 어렵게 들리지는 않을 것이다.

- 위키피디아에서 들고온 사진이다.
- 그림보면 어디서 많이 본 것 같지 않은가?
- 이정도의 개념을 이해한다면 도전해볼만 하다.
왜 어려운가?

- 우리가 일반적으로 배우는 개념은 현실 세계와 개념이 밀접하게 연관되어 있다.
- 그렇기 때문에 예시를 들 수 있고, 그러면 이해가 빠르다.
- 하지만 카테고리 이론의 개념은 그 추상화된 것을 다시 모아 추상화한 것들이다.
- 정의를 기반으로한 사고가 아닌, 괜히 이상한 비유를 들었다간 더 혼란스러울 수 있다.