先日まで Northeastern University の Robust Systems Lab で訪問研究員をやっていました.その時に関数型プログラミング入門のチュートリアルを行ったのですが,わりと好評だったと思うので,スライドを日本語化したものを公開します.
いわゆる手続き型の言語にも関数型言語由来の機能が追加されるようになって久しく,研究のためのコーディングでもこれらの機能は有用です.しかし,これらの機能の使い道がピンとこないまま,あるいは存在に気づかないまま活用できずにいる学生が多いように感じています.
普通であれば「関数型プログラミングについて勉強しておいて」と学生に伝えれば済むのですが,典型的な関数型プログラミングの解説は典型的な学生に関数型プログラミングの有用性を理解させられるものではなく,学生にとっての体感的な学習コスパ(=有用性/学習コスト)が著しく低いために身につかないように思われます.僕の感覚では,「手続き型言語に追加されている関数型言語由来の機能でちょっと楽をしたい」程度の低いこころざしの範囲であれば,関数型プログラミングの学習コスパは極めて高く,これは適切な教材の不在によって生じている損失のように思われました.
というわけで,このチュートリアルを行うにあたっては,学生が興味を持ちそうな卑近な(日々の宿題を解くのに役立ちそうな)例題を選び,利便性の積極的なアピールを行うアプローチを試みています.大学生という聴衆に特化しているので役に立たない場合も多々あるかと思いますが,何かの参考になりましたら幸いです.