カリー化と部分適用の関係
カリー化
カーリー化とは、
カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)である。
カリー化 - Wikipedia
なので、↓のコードのf関数や
// ソースコード1 object Main extends App{ val add = (x: Int, y: Int) => x + y val f = (x: Int) => { (y: Int) => add(x, y) // add関数が部分適用されている。 } println(f(1)(2)) }
↓のコードのadd関数は、カリーされた関数ということになります。
// ソースコード2 object Main extends App{ val add = (x: Int) => (y: Int) => x + y println(add(1)(2)) }
部分適用
部分適用とは、引数の一部を関数に渡すことです。
ソースコード1のf関数で部分適用が行われています。
結論
部分適用は、カリー化するため手段のうちの1つです。