カリー化は複数の引数を受け取るメソッドを、最初の引数を受け取り、"残りの引数を受け取るメソッド"を返すメソッドに変換することをさします。
(Int, Int, Int) => Intのようなメソッドを(Int => (Int => Int))のような形に変換することですね。
部分適用とは、カリー化されたメソッドに対して、一部の引数を渡して部分的に引数を決定したメソッドを作成することをさします。
使用例としては、ロガーを作成する時に下記のように部分適用を用いたりしています。
(以前カリー化の説明用に作った例のため、言語がScalaじゃないです。すみません。。)
lang
1// カリー化されたメソッドを作成
2var logger = function (level) {
3 return function (message) {
4 console.log ("[" + level + "] " + message);
5 };
6};
7
8// 部分適用
9var debugLogger = logger ("DEBUG");
10
11debugLogger ("DebugMessage"); // [DEBUG] DebugMessage
2015/02/06 02:42