
138
5 章 関数を組み立てる関数
5.3.3
「流暢な」
API
のためのカリー化
今までに紹介したカリー化の利点とは異なる利点として、「流暢な」
API
を生成
できることが挙げられます。
Haskell
プログラミング言語では、関数はデフォルト
でカリー化されているため、ライブラリは自然にこの恩恵を受けています。しかし
JavaScript
で同様のことを行うためには、カリー化の利点を活用するように
API
を
設計し、そして利用方法のドキュメントの提供を行うことが必要となります。カリー
化がその場その場で適切なツールかどうかを判断するための一般的なルールは「
API
が高階関数を活用するかどうか」です。もし活用するのであれば、
1
つのパラメータ
までカリー化された関数の利用が適当です。たとえば、
4
章で定義した
checker
関数
は関数を引数に取り、値の妥当性を検証する関数を返しました。カリー化された関数
を使って組み立てた
checker
関数はとてもシンプルで流暢になります。
var greaterThan = curry2(function (lhs, rhs) { return lhs > rhs });
var lessThan = curry2(function (lhs, rhs) { return lhs < rhs });
値の大・小を判定する
2
つの関数をカリー化することによって、プレディケート
として
validator
関数に直接渡すことができます。
var withinRange = checker( ...