C#の型推論は怠けすぎ

2010-09-29(via やねうらおさんとこ)

C#はバランスと取れた良い言語ですが、あえて欠点を挙げると型推論がイマイチですよね。

using System;
using System.Collections.Generic;

module M
{
    static Main() : void 
    {
        // C#のvarに近いが初期化は必須ではない
        // mutable x = null;もOK。この場合、代入は参照型のみになる
        mutable x;

        try {
            // 適当なコード
            x = Dictionary.[int, string]();
            x[10] = "ten";
        }
        catch {
            | x is Exception => Console.WriteLine(x);
        }
        finally 
        {
            match (x)
            {
                | y is IDisposable => y.Dispose()
                | _ => ();
            }
        }
    }
}

C#2.0の頃のNemerleでもこの程度は推論してくれます。・・・と、久々にNemerleのコードを書いてみました。