Partial application

日本語では部分適用と呼ぶようですが、関数型言語をやってないと馴染みがないですね。誤解を恐れずに動きだけを言うと、N個の引数を取る関数にM(M < N)個の引数を渡すと、N-M個の引数を取る関数を返します。説明を読むよりサンプルを見た方が早いと思うので、簡単な例を。

def add (x : int, y : int) {
    x + y;
}

def add7 = add (_, 7);
/*
// これと同じ
def add7 = fun (x) {
    add (x, 7);
}
 */

System.Console.WriteLine ( add7 (5) );

/* 結果
12
 */

'_'が省略された引数を意味します。