
189
7
章
純粋性、不変性、変更ポリシー
本章では、完全に関数型かつ実用的なスタイルを求めるための要点を説明します。
関数型プログラミングとは関数で構築するプログラミングスタイルだけではありませ
ん。関数型プログラミングは、ソフトウェアの創造プロセスにまとわりつく複雑さを
最小限に抑えるための構築方法を考える手段です。複雑さを抑える方法のひとつとし
ては、プログラム内の状態変更を最小限に抑える、もしくは(理想的には)完全に排
除することです。
7.1
純粋性
ここで突然ですが、ある数値を与えられると、
1
からその数値までの間から(疑
似)ランダムに選んだ数値を返すような関数が必要な場面を想像してください。
Underscore
の
_.random
はほぼ条件を満たしますが、デフォルトでは
0
を含んでしま
います。したがって、最初はとりあえず以下のようなコードを書くと思います。
var rand = partial1(_.random, 1);
partial1 - p141
この
rand
関数は以下のように簡単に使用できます。
rand(10);
//=> 7
repeatedly(10, partial1(rand, 10));
//=> [2, 6, 6, 7, 7, 4, 4, 10, 8, 5]
_.take(repeatedly(100, partial1(rand, 10)), 5);
repeatedly - p102