C#3.0とlambda

かなり久々に(特に目的はないけど)C#3.0をいじってみました。
プレビュー版なので仕様が完全に実装されてなかったり、
意味不明な挙動をする点が多々あったりするけど・・。笑



Func hoge = null;
hoge = (int x) => x==1 ? 1 : x * hoge(x-1);
Scheme風に書くと

hoge =
(( int x ) =>
((x == 1) ?
1 :
(x * hoge( x - 1 ))));
かな?w(無駄に括弧増やしてみたハムニダ


あらかじめhogeを宣言しておかないと
再帰部分でコンパイラに「見つからないぜ!!」と怒られる・・・。


新しい文法が加わると、インデントにちょっと悩みますねー。
# 匿名メソッドが追加された時も色々考えた記憶が
さすがに後者のような書き方はしないと思いますが。笑