私はクラスの階層の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の初期から一般化されたマップ関数を使用していない人はいませんか?"ほとんどの場合、これらの「一般化されたマップ関数」はコレクションまたはシーケンスベースであるという点で、1つの違いがあります。今日でさえ、これはClojureなどで見られます。[map'関数はコレクションを取得し、遅延配列を返します](http://clojuredocs.org/clojure_core/1.2.0/clojure.core/map)。対照的に、 'Functor'クラスは等式法に基づいており、' IO'やFRP' Behavior'型のような非コレクション実装につながる実装については想定していません。 –