純粋関数とは何か?
純粋関数(pure function)とは、これら2つの条件を満たす関数を指す。
- 同じ入力が与えられると、その関数は同じ出力を返す。
- 関数は、その関数のスコープにおいて副作用を起こさない。
純粋関数は、上記の2つの条件を満たす限り、関数内のローカルデータを変更することができる。
Pure
const a = (x, y) => x + y const b = (arr, value) => arr.concat(value) const c = arr => [...arr].sort((a, b) => a - b)
Impure
const a = (x, y) => x + y + Math.random() const b = (arr, value) => (arr.push(value), arr)
- tips
- 純粋関数は、その信頼性のため推測が用意にできる。
- 全ての関数は、明示的に副作用を起こさない限り純粋関数であるべきである。
- もし関数が値を返さないのであれば、すなわち副作用が起こることを示している。