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! 俺達にできないことを平然とやってのけるっ! そこに痺れる! 憧れるうぅ!