- 재사용 방법의 하나인 합성은 타입과 함수
- 타입은 AND 또는 OR로 합성
- input 개수와 output 개수가 같을 때는 함수 합성이 쉽다
- 함수의 output을 다음 함수의 input으로 넘기면 끝
- 개수가 다를 때 이걸 해결할 방법이 필요
- input 개수가 더 많을 때는 Currying(커링)
- input 개수를 하나로 만들어준다
- output 개수가 더 많을 때는 Monad(모나드)
- output 개수를 하나로 만들고 처리 혹은 처리되지 않음으로 구분
- 처리된 건 다음 함수로 그냥 넘김
- 처리되지 않은 건 함수로 처리 시도
- 알고 보니 이게 Monad
- output을 Monad에 담고 bind로 함수 조합
- output 개수를 하나로 만들고 처리 혹은 처리되지 않음으로 구분
함수 조합으로 설명하면서 "왜?"에 대한 답을 주니깐 이해가 잘 됩니다. 모나드를 상자에 넣고 꺼내고 뭐 이런 식으로 설명한 글을 봤을 때, 이해가 잘 되지 않았었는데요. 지금 생각하면 "왜"가 빠진 글이라서 그랬던 것 같습니다.