こんどのC#はすごいな(その2)

Haskellなどの関数型言語が少しブームになっていますが、次期C#にも関数型の思想が入ってくる。
それを応用すると遅延評価(lazy evaluation)などを自然*1に含めることができるらしい。

// Now, the parameters are functions that 
// can be used for calculating values
int func(Func<int> first, Func<int> second)   
{
  if ((first()%2) == 0) return 0; else return second();
}

// Parameters are passed using lambda expressions
func(() => n, () => expensiveCalculation());

Concepts behind the C# 3.0 languageより

*1:関数型言語以外の言語で考えた場合の話