なぜC#の言語設計者はこのような何かのためのサポート含まれていない可能性があります(Structure and Interpretation of Computer Programsから移植された、第二編、P 30。。):実際にC#に字句的にネストされた関数がないのはなぜですか?
/// <summary>Return the square root of x.</summary>
double sqrt(double x) {
bool goodEnough(double guess) {
return Math.Abs(square(guess) - x) < 0.001;
}
double improve(double guess) {
return average(guess, x/guess);
}
double sqrtIter(double guess) {
return goodEnough(guess) ? guess : sqrtIter(improve(guess));
}
sqrtIter(1.0);
}
+1。適切なテール再帰部分を除いて。 :) –
うん、C#はテール再帰をループに最適化しません。 *その*機能は言語にはありません。 – yfeldblum
これを指摘してくれてありがとう!私は.NET 3.5への切り替えを押し進める必要があります(われわれはまだ2.0を使っていません)。 –