Me pregunto si otros desarrolladores de C# encontrarían una mejora tener una directiva de compilación para csc.exe
para hacer que los espacios en blanco sean significativos a la Haskell o Python, donde los tipos de espacios en blanco crean bloques de código.Espacios en blanco significativos en C# como Python o Haskell?
Si bien esto sería sin duda una salida masiva de C-style languages, me parece que desde C#, en última instancia, se está compilando a CIL (que todavía tienen las llaves y punto y coma), lo que realmente es sólo un truco de análisis del compilador puede manejar de cualquier manera (es decir, puede tratar con espacios en blanco significativos o no). Dado que los rizos y los puntos y comas a menudo son una barrera para ingresar a C# &, en realidad solo analizan los ayudantes (en sí mismos no le dan sentido a su código), podrían eliminarse a la Haskell/Python.
F # maneja esto con la directiva del compilador #light que se puede leer en Lightweight syntax option in F# 1.1.12.3.
Me gustaría ver lo mismo en C#: una directiva #SigSpace o somesuch que dirigiría csc.exe
para tratar la fuente como un archivo Haskell en términos de espacio en blanco (solo como un ejemplo).
estándar de C#:
public void WhiteSpaceSig()
{
List<string> names = new List<string>();
List<string> colors = new List<string>();
foreach (string name in names)
{
foreach (string color in colors)
{
// bla bla bla
}
}
}
espacio en blanco significativo:
#SigSpace
public void WhiteSpaceSig()
List<string> names = new List<string>()
List<string> colors = new List<string>()
foreach (string name in names)
foreach (string color in colors)
// bla bla bla
no estoy diciendo que quiero esto en C#, pero estoy interesado en lo que son las ventajas y desventajas. Creo que la mayoría de los desarrolladores de C# se han acostumbrado tanto a la sintaxis que no podrán ver qué tan artificial es (aunque al final puede hacer que el código sea más fácil de leer).
Si quisiera leer/escribir código así usaría Python. Puede ser genial para usted, pero otros desarrolladores probablemente lo encuentren difícil ya que es totalmente no estándar. –
Ya no usa "#light" en F #, simplemente es el predeterminado. – Brian
"IL (que todavía tendría las llaves y los puntos y comas)" - Me temo que tiene un malentendido grave aquí. C# se compila en código de bytes IL, que es solo una serie de códigos de operación, etc. No hay llaves y puntos y comas en ese nivel (e incluso si lo fueran, no serían de utilidad para los desarrolladores que codifican en el nivel C#).Incluso el formato IL textual de ILASM no usa llaves o puntos y comas para muchas construcciones de nivel C#, p. bucle, porque usa bloques de saltos en su lugar, y de nuevo si lo hiciera eso seguiría siendo irrelevante para los codificadores de C#. – itowlson