『なっとく!関数型プログラミング』
https://gyazo.com/74b809dac326e0f035275485694a5058
2023/8/3
書評
べた褒め
説明の順序が良いらしい
良い本で人に薦めるんなら読んどいた方が良いかもな、ぐらいの気持ちmrsekut.icon
ということでポチった
Javaで書かれた命令的なコードを、Scalaで書き直していくスタイル
Part 1 関数型ツールキット
第1章 関数型プログラミングを学ぶ
第2章 純粋関数
めちゃくちゃハンズオン的だな
命令的なコードを、宣言的に変えていく、という説明は、
命令的なコードを書いている人がターゲットだと、かなり良い解説な気がする
純粋関数と単一責任は関係ないだろmrsekut.icon
第3章 イミュータブルな値
mutableにすると考えることが増える
コードを読むときに予測しないといけないことが増える
いったんJavaでFP的な書き方を示すことで、Javaの微妙さを浮き彫りにしている
個人的には当たり前だろう、という感じのものであるmrsekut.icon
が、実際、こういう方針で今も書き続けられているのだろうか
OOPの文脈でもimmutableにしよう、というのは言われて久しい気もする(?)が
mutableにやったときの辛さを改めて見れてよかった
Listを引数に取り、変更できないListを返す
この返り値のListにも.addを呼べるが、実行時エラーになる
うーん
Scalaの具体例でindexを使いまくってるの、どうにかならんのかmrsekut.icon
第4章 値としての関数
最初のページに書いてる要件のやつ読み進める前に解いてみるmrsekut.icon
hsで書いてみるとこんな感じか
code:hs
rankedWords = sortBy . flip $ comparing score
score :: String -> Int
score = length . filter (/= 'a')
読み進めてみた(p.90)が、ほぼ同じだった
comparatorを引数で渡すべき、
まあ、要件によってはそういうこともあるでしょう。
なんかずっとJavaの話してんなmrsekut.icon
JavaでFPする本なのか
p.92
Part2 関数型プログラム
第5章 逐次プログラム
第6章 エラー処理
第7章 型としての要件
第8章 値としてのIO
第9章 値としてのストリーム
第10章 並行プログラム
Part3 関数型プログラミングの応用
第11章 関数型プログラムを設計する
第12章 関数型プログラムをテストする