関数型プログラミング入門(1) - まえがき

関数型プログラミングをいい加減覚えたいと思っていたが、どうせなら記事にしようと思ったので書いてみる。

ネット上には良い入門記事が(2015/10時点でたぶん)ない。独習Scalazは私が望むものに近いが、関数型プログラミングの基礎やHaskellがある程度わかっている人向けのように思える。少なくとも「とりあえずScalaでvalだけでプログラム組めるようになったぜー」程度の人間が読み進めるのはしんどい。

自分の目標としては以下の様な感じだ:

  • 基本的な型クラスを理解して使える
  • ScalazやCatsをある程度触れる
  • 実用性が低いあまりにも高度な部分は(とりあえず)学習しない
  • Typeclassopediaにある型クラスを理解する

参考にするのは以下。

  • Scala 関数型デザイン&プログラミング(原題:Functional Programming in Scala) - インプレス
  • 型クラスペディア(The Typeclassopedia) 日本語 英語

使う言語はScalaとする。HaskellやLISPやF#はとりあえずやらない。Scalaの基礎についても書かない。SBTプロジェクトの作り方やコンパイルの仕方、IDEの使い方などもやらない。

正確性には気をつけて書くが、勉強しながら書くため多分間違いも多いと思う。間違いがあったらTwitterで指摘してくもらえると嬉しい。

あと、自分の勝手な感想だが、関数型プログラミングの界隈にはあまり親切な人が少なく、だいたい初学者に対しては冷たい印象を受ける。そういった中で、初学者について丁寧に解説してくれるページがあったらいいな、と思ったのもこれを書いた動機だ。

「技術的に正確でない中途半端な記事ならば書かないほうが良い」という意見もあるが、私が思うに正確性に欠ける文章が悪なのであればとっくにインターネットは滅んでいるだろうし、間違いがあったら直せばいいじゃん、何もないよりはあったほうが良いなどと思った。