Currying

カリー化

概要

複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)

  • 要するに「この関数には引数が2つ必要だけど、とりあえず1個目の引数ちょうだい。もう1個はあとでちょうだい。そこからまた処理続けるから。」

由来

具体例

const add = (x: number, y: number): number => x + y;
// ↓ 普通の関数をカリーな関数に導く(カリー化)
const curriedAdd = (x: number) => (y: number) => x + y;

const add1 = curriedAdd(1); // 引数xに1が適用される(部分適用)

特徴

メリット

  • 遅延評価
  • 再利用しやすい
  • 関数合成が簡単になる

参考