カテゴリー別アーカイブ: 関数型プログラミング

カリー化と部分適用

カリー化と部分適用…今までずっと混同していたので, 備忘録的に記載しておきます.

JavaScriptの例

// 部分適用可能な関数を返す関数の定義 (カリー化)
var pow = function(exponent) {
    return function(base) {
        return Math.pow(base, exponent);
    }
};

// 引数を適用して, 新しい関数を生成する (部分適用)
var square = pow(2);
var cube   = pow(3);

console.log(square(2));  // -> 4
console.log(square(3));  // -> 9
console.log(cube(2));    // -> 8
console.log(cube(3));    // -> 27