
15
1.2 関数型プログラミングを始めるために
本書は、今までに学んだすべてを関数型プログラミングのために捨て去ることを奨
励するものではありません。代わりに、関数型プログラミングの世界を紹介すること
によって、関数型プログラミングがあなたの役に立つかどうかをあなた自身に判断し
てもらうためのものなのです。
1.2.4
動作単位としての関数
データと動作を隠蔽することは(より「軽い」データ変更方法を提供するという
副作用を持っています)、関数を抽象の単位にする方法のひとつに過ぎません。抽
象の意味とは、個別の基本的な動作を保持し、あちこちで使いまわすための簡単な
方法を提供することです。例えば、インデックスを使用して配列の要素を指定する
JavaScript
の文法を考えてみてください。
var letters = ['a', 'b', 'c'];
letters[1];
//=> 'b'
配列のインデックス指定は
JavaScript
の基本動作ですが、この動作を保持してお
いて後で好きなように使いまわすためには、関数に閉じ込めておく以外に方法はあり
ません。したがって、ここでは配列のインデックス指定を行うシンプルな関数を構築
します。この関数を
nth
と呼びます。あまり深く考えずに
nth
関数を実装すると、次
のようになります。
function naiveNth(a, index) {
return a[index];
}
ご想像の通り、
naiveNth
関数は引数に期待通りの値を与える場合は完璧に動作します。