カリーライス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」っていう場合は教えてください。