C#3.0 lambda

C#3.0のlambdaの文法は良い感じだと思っていたのですが、Nemerleに取り込まれてしまいました。(^^;

using System;

def foldl (ls, acc, fn) {
    match (ls) {
        | x::xs => foldl (xs, fn (acc, x), fn);
        | _ => acc;
    }
}

def foldr (ls, acc, fn) {
    match (ls) {
        | x::xs => fn (x, foldr(xs, acc, fn));
        | _ => acc;
    }
}

def ls = [1, 2, 3];

// 匿名関数
Console.WriteLine (foldl (ls, 0, fun (x, y) { x - y}));
Console.WriteLine (foldr (ls, 0, fun (x, y) { x - y}));
// C#3.0 lambda
Console.WriteLine (foldl (ls, 0, (x,y) => x - y));
Console.WriteLine (foldr (ls, 0, (x,y) => x - y));

/* 結果
 -6
 2
 -6
 2
 */

匿名関数としてfun、λ式としてlambdaマクロを持っていたはずなのに。さすがNemerle! 俺達にできないことを平然とやってのけるっ! そこに痺れる! 憧れるうぅ!

個人的には-csオプションとかつけて、C#ソースコードコンパイル可能にしてほしいです。(^^;