¿Por qué podrían los diseñadores del lenguaje C# no han incluido el apoyo a algo como esto (portado desde Structure and Interpretation of Computer Programs, segunda ed, p 30..):¿Por qué C# no tiene funciones anidadas léxicamente?
/// <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. Excepto por la parte propiamente recursiva de la cola. :) –
Sí, C# no optimizará la repetición de cola en un bucle. * Esa * característica falta en el idioma. – yfeldblum
¡Gracias por señalar esto! Tendré que presionar para cambiar a .NET 3.5 (inexplicablemente sigo usando 2.0). –