typescript-programming-study
typescript-programming-study copied to clipboard
모나드 설명 수정 요청
판타지랜드 규격에 다음과 같은 설명이 있습니다.
판타지랜드 규격은 하스켈 표준 라이브러리 구조를 Javascript 방식으로 재구성한 것이다. 그림에서 보면 모나드는 아래 네 가지 요소를 구현한 것임을 알 수 있다.
- 펑터(Functor) : map이라는 인스턴스 메서드를 가지는 클래스
- 어플라이(Apply) : 펑터이면서 ap라는 인스턴스 메서드를 가지는 클래스
- 애플리커티브(Applicative) : 어플라이이면서 of라는 클래스 메서드를 가지는 클래스
- 체인(Chain) : 애플리커티브이면서 chain이라는 메서드를 가지는 클래스
해당 설명에 오류가 있는 것 같습니다.
그래프에 따르면 체인는 어플라이이지만 애플리커티브가 아니고, 체인이면서 동시에 애플리커티브여야 모나드라고 나와 있습니다.
판타지랜드 규격 원문에도 체인은 체인을 구현하는 값은 어플라이도 구현해야 합니다.(A value that implements the Chain specification must also implement the Apply specification.)라고 나와있지만 어플리커티브를 구현해야한다는 설명은 나와있지 않습니다.
마찬가지로 모나드의 설명도 모나드를 구현한 값은 어플리케이티브와 체인을 구현해야합니다.(A value that implements the Monad specification must also implement the Applicative and Chain specifications.)라고 나와있습니다.
따라서 이전의 설명은 다음처럼 수정되거나 추가 설명이 필요합니다.
- 체인(Chain) : ~~애플리커티브~~어플라이이면서
chain이라는 메서드를 가지는 클래스
판타지랜드 규격은 하스켈 표준 라이브러리 구조를 Javascript 방식으로 재구성한 것이다.
그림에서 보면 모나드는 아래 네 가지 요소를 구현한 것임을 알 수 있다.