¿Hay algo fundamentalmente diferente en los lenguajes que permite que F # tenga la consola interactiva pero que dificulta su implementación para C #?
Sí.
F # es un descendiente del lenguaje de programación ML, que a su vez estuvo fuertemente influenciado por lenguajes como Lisp y Scheme. Esos idiomas fueron diseñados desde el primer día para tener tres propiedades agradables.
Primero, esos lenguajes realmente no tienen declaraciones de la forma en que piensas en C #. Por el contrario, casi todo es una expresión que tiene un valor , por lo que un mecanismo de evaluar y luego imprimir el valor tiene sentido en casi todas las situaciones.
En segundo lugar, esos lenguajes desalientan la programación con efectos secundarios, por lo que puede hacer evaluaciones sin preocuparse de que vaya a estar arruinando el estado global.
En tercer lugar, la mayor parte del trabajo que realiza en esos idiomas es "en el nivel superior"; normalmente no hay una "clase" o un "espacio de nombres" encerrados u otro contexto.
Por el contrario, C # enfatiza el flujo de control de programación con declaraciones que producen efectos secundarios, y esas declaraciones siempre están en múltiples contenedores anidados: un espacio de nombres, una clase, un método, etc.
Así que estas son todas las cosas que hacen que sea más difícil para C # para tener un REPL, pero ciertamente no es imposible . Solo tendríamos que averiguar cuál es la semántica de las declaraciones y expresiones que aparecen fuera del contexto habitual, y cuál es la semántica de las mutaciones que cambian los enlaces de nombres, y así sucesivamente.
¿Por qué F # tiene un modo interactivo pero no C #?
Porque el equipo F # decidió que tener un ciclo REPL era un escenario de prioridad uno para ellos. El equipo de C # históricamente no lo ha hecho. Las características no se implementan a menos que sean las características de mayor prioridad que se ajustan al presupuesto; hasta ahora, un C # REPL no ha estado en la parte superior de nuestra lista.
El proyecto Roslyn tiene un C # REPL (y eventualmente también tendrá un VB REPL, pero aún no está listo). Puede descargar una versión preliminar para ver cómo le gusta en
http://www.microsoft.com/en-us/download/details.aspx?id=27746