Nemerle の try-catch


Nemerle の try-catch-finally は F# の try-with と try-finally を合わせたようなものです。 F# では try-with-finaly と 3 つ併せて書くことはできませんが, Nemerle では可能です。

try-catch の部分が任意の型の値を返すのに対し, finally 節は void を返すことに注意が必要です。次の例では, finally 節の値は x の値に影響しません。

#pragma indent

def x =
   try
      1
   catch
      | _ => -1
   finally
      0  // warning N10005

例外は投げられないので x の値は 1 になります。 finally 節は void を返すべきなのに int を返すので, N10005 警告が出ます。