予習
6章 純粋関数型の状態
- 乱数の生成
6.1 副作用を使った乱数の生成
- scala.util.Random
- 状態の更新は副作用として実行されるため、これらのメソッドは参照透過ではありません
6.2 純粋関数型の乱数の生成
- 次の状態の計算を、プログラムの他の部分に対する新しい状態の通知から切り離す
- カプセル化
- 線型合同法(linear congruential generator)
6.3 ステートフル API の純粋化
- API に実際に何かを変化させるのではなく、次の状態を計算させる
- 純粋関数を使って次の状態を計算すると、データを実際にその場で変化させることができないため、効率性が低下する
- 純粋関数を使ったプログラミングにより、設計空間は大幅に単純化
6.4 状態の処理に適した API
- 状態アクションまたは状態遷移
コンビネータとは、後ほど定義する高階関数
6.4.1 状態アクションの結合
- 6.4.2 入れ子の状態アクション
6.5 状態アクションデータ型の一般化
- 状態アクションを処理するための汎用目的の関数であり、状態の型を特別扱いしません
- 状態を扱う計算、あるいは状態アクション、状態遷移、さらにはステートメントの省略形
6.6 純粋関数型の命令型プログラミング
- 命令型プログラミングのパラダイムでは、プログラムとはずらりと並んだステートメントのこと であり、ステートメントはそれぞれプログラムの状態を変化させる可能性
- 関数型プログラミングが副作用のないプログラミングにすぎない
6.7 まとめ
- 考え方は単純で、引数として状態を受け取る純粋関数を使用し、結果とともに新しい状態を返します