kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Grokking Simplicity 1-3章

まだ1-3章までしか出てないので

関数型プログラミングの話って
Pure Functionが、公開関数が、再帰がmapが、副作用は避けよう、みたいなのが
多いイメージだけどこの本は違う
まず考え方から入る(というか考え方ばっかり

関数型プログラミングはActionとCalculationとData(ACD)を分けるところから始まる

 

Actionは、いつ、何回実行するかで結果が変わるもの
メールを送るとかデータベース読むとか

Calculationはいつ何回実行しても結果が変わらないもの
計画や判断はCalculationになることが多い

Dataはただのデータ
ひとつのデータがいろんな解釈で使える

ActionよりもCalculationが、CalculationよりもDataが扱いやすい
Actionは変わりやすく、Dataはずっとそのまま使える可能性が高いから
できるだけCalculationやDataにする

いっけんActionなようでも、細分化するとCalculationやDataを取り出せることが多い
買い物に行って、あれこれ見ながら何を買うか考えて買ってると
全体がActionみたいになってしまうけど
今持っているものとほしいものをもとにして買い物リストを作ってから
買い物をすることにすると、

Data:今持っているもの、ほしいもの
Calculation:今持っているものとほしいものから買うもののリスト(これもデータ)を作成する
Action:買うもののリストにしたがって物を買う

というようにCalculationとDataを取り出すことができる

といった話が中心
なかなか新鮮
関数プログラミングやってる人には普通の話なんだろうけどたぶん

考え方を示した後、少しJavaScriptで書くとどうなるかっていう話も出てくる
Timeline Diagramを使って考えようというのも出てきた
これは並行だか並列だかの話
大事な話っぽいのはわかるけどACDの話の中で出てきて周囲に溶け込めてない気がする
Early Accessだけど構成が変わるほどの変更はないかな?どうかな?