Dlaczego nie może projektanci C# język obejmowały wsparcie dla czegoś takiego (przeniesiony z Structure and Interpretation of Computer Programs, drugie wydanie, str. 30).:Dlaczego funkcja C# nie ma funkcji zagnieżdżonych leksykalnie?
/// <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. Z wyjątkiem właściwie rekurencyjnej części ogonowej. :) –
Tak, C# nie zoptymalizuje rekursji ogona w pętli. * Brak tej funkcji w danym języku. – yfeldblum
Dzięki za wskazanie tego! Będę musiał naciskać na przejście na .NET 3.5 (w niewytłumaczalny sposób używamy 2.0). –