
25
1.2 関数型プログラミングを始めるために
}
function selectHairColor(table) {
return _.rest(_.map(table, function(row) {
return nth(row, 2);
}));
}
var mergeResults = _.zip;
†
ここで定義された
select
○○関数は、あらかじめ定義しておいた配列処理関数を使
用して、シンプルなデータ型への流暢なアクセスを実現しています。
selectNames(peopleTable);
//=> ["Merble", "Bob"]
selectAges(peopleTable);
//=> ["35", "64"]
selectHairColor(peopleTable);
//=> ["red", "blonde"]
mergeResults(selectNames(peopleTable), selectAges(peopleTable));
//=> [["Merble", "35"], ["Bob", "64"]]
この実装と使用法のシンプルさは、
JavaScript
が提供するデータ構造をデータモデ
リングで使用するよう引き付けます。しかし、オブジェクト指向やクラスベースのア
プローチに場所がないと言っているわけではありません。私の経験上、汎用的なコレ
クション処理関数を中心とした関数型のアプローチは人間に関するデータの取り扱い
に理想的で、オブジェクト指向のアプローチは人間をシミュレートする場合に最適 ...