https://github.com/attltb/Lecture-Monad/blob/main/KOR/I-3.md


반박받은 것들 중에서 설득력이 있다고 생각하는 내용들 반영해서 좀 고쳐봤음.

갤에 올린 글은 본문은 수정 안하고 수정본 링크만 추가해놈.


가장 중요한 게 T<A>타입 자체를 계산으로 보는 설명들에 대한 얘긴데, 내 최종적인 입장은 새로 추가된 1-3에 다 나와 있음. 

계산 자체를 Moggi의 모델을 통해 정의되는 개념으로 보는 입장은 충분히 그럴듯함.

문제는 그 입장 자체가 아니라 그 입장에 기반한 설명이 Moggi의 모델에서 T<A>가 계산인 이유를 올바로 이해했느냐임.


Moggi 논문 보면 Optional(=Maybe)이랑 List와 동치인 집합이 Notion of computation 중에서 가장 먼저 사례로 소개되는데

저자는 그냥 A타입을 반환하는 실패할 수 있거나 비결정적인 프로그램을 Optional<A>나 List<A>타입의 람다식으로 나타낼 수 있으니까

그런 의미에서 이것들을 계산의 타입이라고 했을 가능성이 높은 정도도 아니고 확실함.


즉 Maybe나 List타입의 값 자체가 계산을 나타낸다고 볼 수 있다면서 논리적 곡예를 하는 설명들은

그냥 Moggi 본인은 하지도 않은 이상한 짓을 하고 있는거.


프로그래밍의 모나드를 꼭 발견자와 같은 방식으로 이해할 필요는 없겠지. 다른 이해가 더 유용하면 받아들일 수도 있는 거고.

그러나 Maybe나 List모나드 타입 보고 계산이니 뭐니 하는 설명들은 유용하기는커녕

지금껏 모나드 공부하는 사람들의 혼란을 늘리는 데만 기여했으므로 그냥 백해무익한 게 맞다는 게 내 결론이다.


하여간 새로 추가된 1-3에 내 입장은 다 정리되어 있음.

그 외에도 2장에서 약간 사족처럼 보이는 내용 좀 뺐는데 그거 말고 특별히 고칠 건 없었는듯?


이번 글은 주제부터가 모나드를 설명하는게 아니라 모나드 설명 자체를 다루는 메타주제라 당연히 어려울 수밖에 없는데

그럼에도 불구하고 내 글이 모나드에 대한 다른 어떤 소개보다도 이해가 잘 된다고 하는 사람들이 있다.

그만큼 내 접근과 방향성 자체는 옳다고 확신하고 있다.


여하간 수정작업은 일단 끝났고 이제 3장 4장 쓸것임. 개인적으로 하는 다른 일도 있어서 이제부터 한달 정도 걸릴것같다.