部分適用
既存の関数の引数の一部を固定して、新しい関数を作ること。関数型の基本パターン。
たとえばadd(a, b)に対してconst add5 = partial(add, 5)とすれば、add5(10)は15になる。関数の引数の数(アリティ)を減らす技法だ。
カリー化とは別物で、部分適用は具体的な値を与えるのに対し、カリー化は関数の形そのものを変換する。JavaScriptではFunction.prototype.bind()が部分適用にあたり(add.bind(null, 5))、Pythonではfunctools.partialがある。使いどころは、データを事前に束縛したコールバックの設定、パイプラインの構築、軽量な依存性注入など。map(partial(format, formatString), data)のような書き方は、アロー関数より読みやすい。オーバーヘッドは小さく、JITの最適化もよく効く。