Currying
カリー化
概要
複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)
- 要するに「この関数には引数が2つ必要だけど、とりあえず1個目の引数ちょうだい。もう1個はあとでちょうだい。そこからまた処理続けるから。」
由来
- 論理学者ハスケル・カリーにちなんで名付けられた
- 実際に考案したのはMoses Schönfinkelとゴットロープ・フレーゲである。
具体例
const add = (x: number, y: number): number => x + y;
// ↓ 普通の関数をカリーな関数に導く(カリー化)
const curriedAdd = (x: number) => (y: number) => x + y;
const add1 = curriedAdd(1); // 引数xに1が適用される(部分適用)
特徴
メリット
- 遅延評価
- 再利用しやすい
- 関数合成が簡単になる