副作用が関数内に入ってるコード
JavaScript
1const age = (birthYear) => { 2 3 const today = new Date(); 4 const thisYear = today.getFullYear(); 5 return thisYear - birthYear; 6}
副作用から分離されたコード
JavaScript
1const age = (birthYear, thisYear) => { 2 return thisYear - birthYear;
使う側
JavaScript
1age(2000, (new Date()).getFullYear());
「関数型プログラミングの基礎」という書籍の2章でこのようなコードがあったのですが、
副作用から分離されたコードと言っても、結局、外部の「日付」というコンテキストに処理結果が依存してくるので、
果たしてこれは参照透過性があるコードと言って良いものなのかどうかわからず混乱してしまいました。
どう考えると良いのでしょうか?
一応、本では副作用を持つ部分と持たない部分を分離して、副作用がない方の関数だけでも参照透過性をもたせようぜってことだったのですが、それに渡す引数がDateオブジェクトの日付みたいなものだと参照透過性があるって言えるのかわかりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/09 11:16
2017/10/09 11:40 編集
退会済みユーザー
2017/10/09 11:47