カリーライス2

↑のエントリにお師匠(id:uskz)さまからコメント頂いてふと気づきましたが,
そう言われるとクロージャでもできますね!

JavaScriptの時代ですね!
いやいやいや,C#3.0ちゃんだって負けてはいません!

public int Plus( int v1, int v2, int v3 )
{
	return v1 + v2 + v3;
}
public void Test()
{
	Func<int, Func<int, int, int>> f = ( x => ((y, z) => this.Plus( x, y, z )) );
	var add10 = f( 10 );
	Console.WriteLine( add10( 20, 20 ) );

	Func<int, Func<int, int>> f2 = ( x => (y => add10( x, y )) );
	var add30 = f2( 20 );
	Console.WriteLine( add30( 20 ) );
}

50
50
これだと値型でも普通にカリー化できますね。
ただ,カリー化を深く知らないのでこれが正しいのか良く分からない。。。
もし「おい,それただのクロージャじゃねぇか!カリー化っていうもんはなぁ(ry」っていう場合は教えてください。