関数型プログラミングをいい加減覚えたいと思っていたが、どうせなら記事にしようと思ったので書いてみる。
ネット上には良い入門記事が(2015/10時点でたぶん)ない。独習Scalazは私が望むものに近いが、関数型プログラミングの基礎やHaskellがある程度わかっている人向けのように思える。少なくとも「とりあえずScalaでvalだけでプログラム組めるようになったぜー」程度の人間が読み進めるのはしんどい。
自分の目標としては以下の様な感じだ:
- 基本的な型クラスを理解して使える
- ScalazやCatsをある程度触れる
- 実用性が低いあまりにも高度な部分は(とりあえず)学習しない
- Typeclassopediaにある型クラスを理解する
参考にするのは以下。
- Scala 関数型デザイン&プログラミング(原題:Functional Programming in Scala) - インプレス
- 型クラスペディア(The Typeclassopedia) 日本語 英語
使う言語はScalaとする。HaskellやLISPやF#はとりあえずやらない。Scalaの基礎についても書かない。SBTプロジェクトの作り方やコンパイルの仕方、IDEの使い方などもやらない。
正確性には気をつけて書くが、勉強しながら書くため多分間違いも多いと思う。間違いがあったらTwitterで指摘してくもらえると嬉しい。
あと、自分の勝手な感想だが、関数型プログラミングの界隈にはあまり親切な人が少なく、だいたい初学者に対しては冷たい印象を受ける。そういった中で、初学者について丁寧に解説してくれるページがあったらいいな、と思ったのもこれを書いた動機だ。
「技術的に正確でない中途半端な記事ならば書かないほうが良い」という意見もあるが、私が思うに正確性に欠ける文章が悪なのであればとっくにインターネットは滅んでいるだろうし、間違いがあったら直せばいいじゃん、何もないよりはあったほうが良いなどと思った。