나는 계층의 Monad
계층을 정말로 깊이 이해하려고 노력하고있다. 그 중 일부는 물론 많은 예제를 보았습니다. 그러나이 클래스가 처음 발견 된 방법과 동기에 특히 관심이 있습니다.Functor 유형 수업의 역사는 무엇입니까?
나는 처음에 하스켈의 IO 문제에 대한 해결책으로 나온 것이고, 1989-92 년에 Moggi와 Wadler가 그들을 소개 한 논문에 익숙하다는 것을 알고있다.
나는 Conor McBride와 Ross Paterson의 "Applicative Programming with Effects"에서 Applicatives
이 소개 된 곳을 보았습니다.
제 질문은 대중화 된 것입니다 Functor
, 그리고 그들이 언제 온거야? 나는 그것이 이후이어야한다고 생각한다. Functor
은 수퍼 클래스가 아니지만, LISP의 초기부터 일반화 된지도 기능을 사용하고있는 사람들이 아니 었는가?
Functor 클래스는 Monad의 슈퍼 클래스 중 첫 번째 (1.3이 출시되기 전에)이지만, 사람들이 불필요한 수퍼 클래스라고 느꼈기 때문에 (슬프게도) 취소되었습니다. – augustss
"LISP 초창기부터 일반적인지도 기능을 사용하지 않았습니까?" 대부분의 경우 이러한 "일반화 된지도 함수"는 콜렉션 또는 시퀀스 기반입니다. 오늘도 Clojure에서 이것을 볼 수 있는데, 여기서'map' 함수는 콜렉션을 가져 와서 게으른 시퀀스를 반환합니다. '(http://clojuredocs.org/clojure_core/1.2.0/clojure.core/map). 반대로,'Functor' 클래스는 등식 법칙을 기반으로하고 구현에 대한 가정을하지 않으며,'IO'와 FRP' Behavior' 타입과 같은 비 - 콜렉션 구현을 이끌어냅니다. –