Monad クラスと Functor クラスや Applicative クラスの間に階層関係がないのは、本当に「歴史的理由」か?
多くの方が「歴史的経緯」とか「歴史的な理由」と説明するのは Typeclassopedia での記述を受けてのものだと思いますが……果たして「歴史的経緯」は現在でも強い理由の一つでしょうか?
2012-11-21 23:57:56Typeclassopedia: http://t.co/WHF6ynJr 日本語訳: http://t.co/4JbgX6Ww
2012-11-21 23:58:06あらゆる文書中の記述は古くなる可能性があります。「歴史的経緯」や「歴史的な理由」という記述でさえ、その例外ではありません。
2012-11-21 23:58:22Typeclassopedia が書かれた頃はまだ Applicative が使われ始めた時期で、Applicative が広く使われるようになれば、階層化されるに違いないという期待があったと思います。
2012-11-21 23:58:33(実際には別の理由もあり [http://t.co/RHqGZaub http://t.co/HS1dQA2n ] 、それを理由に階層化は未だ実行されていないわけですが。)
2012-11-21 23:58:45また、(メールを探すのが手間なのでリンクは張りませんが、)確か「Haskell' 始動 ー Haskell 2010 制定」まで辺りは、言語標準内の型クラスの定義を変更する場合、「Haskell 言語標準の方を改訂して、それからライブラリに手を入れるべきだ」という風潮がありました
2012-11-21 23:58:57Typeclassopedia がこの頃書かれたということを考えれば、この文書で「Monad クラスと Functor クラス、Applicative クラスの間に階層関係がない」理由の一つとして歴史的経緯を挙げるのも当然かもしれません。
2012-11-21 23:59:21ただ、GHC 7.4.1 の Num クラスに対する変更や 7.6.1 の Bits クラスに対する変更を見て分かるように、現在では Haskell 言語標準に縛られることなく言語標準内の型クラスの定義を変更できるようになっています。
2012-11-21 23:59:38c.f. http://t.co/pO4ObYCA http://t.co/ft0EkQhU http://t.co/Q5wsfSiT
2012-11-21 23:59:52従って、今となっては、歴史的経緯は理由としては弱く、別の理由によって階層化が妨げられていると考えた方が妥当性が高いと思います。
2012-11-22 00:00:03