
292
9 章 クラスを使わないプログラミング
function snapshot(o) { return o.snapshot(); }
function addWatcher(o, fun) { o.watch(fun); }
そしてこれらの関数は、全く予想通りに動作します。
var x = hole(42);
addWatcher(x, note);
swap(x, sqr);
// NOTE: 42 chapter01.js:38
//=> 1764
var y = cas(9, isOdd);
compareAndSwap(y, 9, always(1));
//=> 1
snapshot(y);
//=> 1
コンテナ型に関数型の顔を与えることによって、オブジェクトやメソッドを使用し
たものでは得られることのないレベルの柔軟性を勝ち取りました。
9.3
}).call("Finis");
本章で、関数型プログラミングがソフトウェアの構築にどのように力を与えるかを
見せることによって、
JavaScript
での関数型プログラミングに関する私からの説明を
締めくくります。プログラミングに関する問題にはオブジェクト指向、もしくはクラ
スベースの考え方を必要とする機会も存在しますが、多くの場合は関数型の方法でも
同じゴールにたどり着くことができます。関数型の方法でシステムの一部を構築する
だけではなく、オブジェクト中心の
API
と密接に結び付けることなくシステム全体
を関数型で構築することによって、長いスパンでの柔軟性の獲得につながります。 ...