Perché potrebbero i progettisti linguaggio C# non hanno incluso il supporto per qualcosa di simile (porting da Structure and Interpretation of Computer Programs, secondo Ed, pag 30..):Perché C# non ha funzioni annidate lessicalmente?
/// <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. Tranne la parte ricorsiva propriamente coda. :) –
Sì, C# non ottimizzerà la ricorsione della coda in un ciclo. * Quella * caratteristica manca nella lingua. – yfeldblum
Grazie per aver segnalato questo! Dovrò spingere per passare a .NET 3.5 (stiamo ancora inspiegabilmente usando 2.0). –