Haskellの勉強 その0
はじめに
関数型プログラミング言語であるHaskellを最近勉強してます。
動機としては、圏論と関数型プログラミング言語の関係を聞いて、そういえば関数型の言語ってやったことなかったなーって思ったから。
手続型の言語しか触ったことがなかったので考え方がまるで違ってギャップが楽しい毎日です。
学習目的
・関数型プログラミングの思想を雰囲気だけでもつかみ、思考の幅を広げる
・圏論の基礎を身に着ける
学習方法
とりあえずの学習方法としては、RSA暗号をさくっとべたべたな方法で実装した後に、Haskellらしい概念を取り入れていく方法でやります。
RSA暗号を題材に選んだ理由はいくつかあって、一つ目がCTFやってたおかげでRubyやらC#で実装したことがあるため、手続型との対比を行いやすいため。
二つ目が、ぱっと思いついた処理の中で、処理が短い割に数式を処理に落とし込むことが多いため。
三つ目が、RSA暗号は平文空間と暗号文空間が乗法について準同型であるため、圏論が根っこにあるHaskellでは何か面白いことができるかもと思ったため。
おわりに
大体こんな感じ!
RSA暗号について深く書くつもりはないので、気になる方はwikipedia先生とか参考のURLをのぞいてみてください。
参考
まいとう情報通信研究会(2003) はじめに | サルにも分かるRSA暗号
初めてRSA暗号と出会った直後にお世話になったサイトです。
前提知識がほとんど必要なく、頑張れば中学生でも雰囲気をつかむことができます。
神戸大学 高橋真研究室(2015) RSA暗号
RSA暗号を実装するとき、計算結果が正しいかの答え合わせをここで行ってます。
説明も簡潔で分かりやすく、試しながら学べて参考になると思います。