Haskell は、形式的な数学に根ざした多くの特徴を持つ言語です。言語をより深く理解し理解するには、どの数学トピックを勉強すればよいですか? たとえば、抽象代数と圏論はどちらも探求するのに適したトピックだと思います。
2 に答える
一般に、離散数学、論理、思考集合または関係、帰納法、証明再帰、コアカーション、いくつかの基本的な代数、数論、型理論、ラムダ計算、ところで、Haskell に飛び込むときに必要なすべての数学をカバーする本があります。
抽象代数(群、環など)がHaskellに直接関連しているとは思いませんが、抽象代数で使用される考え方はHaskellプログラマーにとって非常に役立ちます。これは、微積分や分析で使用されるような思考プロセスを必要とする命令型言語とは対照的です。
私の意見では、圏論を少し知っていると非常に役立ちます。Typeclassopediaを理解できれば、それで十分かもしれません。ウィキブックスhttp://en.wikibooks.org/Haskell/Category_theoryは読みやすいイントロであり、モナドチュートリアルの数よりもはるかに役立つことがわかりました。公平に言えば、それは私自身の現在の主題に関する知識の限界についてであり、おそらく私はまだ気付いていない何かを見逃しているのかもしれません。より高度な圏論は、ジェネリックスなどのいくつかの高度なHaskellトピックに現れますが、少なくとも今のところ、それらはかなり専門的なものだと思います。私はいくつかのCatstersビデオ(Youtube検索ボックスに「catsters」と入力)を見始め、「Haskellがどこから来たのか」のビューを構築することに興味を持っていますが、まだそれほど多くは見ていません。
論理についても少し理解することが重要だと思います。Haskell関数がその型署名(カリーハワード対応)によって表現される述語の証明であることを理解するのに十分です。この概念のより巧妙な使用法は(私が遠くから見ると)、CoqとAgdaで使用されている直観主義型理論の知識に由来しているようです。去年の夏、多くのハスケラーがCoqについての「SoftwareFoundations」(http://www.cis.upenn.edu/~bcpierce/sf/)を読んでいましたが、私は時間を費やすことが多すぎました。自分で。それは私のリストにあります;-)。