Y a-t-il quelque chose de fondamentalement différent dans les langages qui permet à F # d'avoir la console interactive mais qui rend difficile son implémentation pour C #?
Oui.
F # est un descendant du langage de programmation ML, qui à son tour a été fortement influencé par des langages comme Lisp et Scheme. Ces langues ont été conçues dès le premier jour pour avoir trois belles propriétés.
Tout d'abord, ces langages n'ont pas vraiment de déclarations comme vous les voyez en C #. Au contraire, presque tout est une expression qui a une valeur , donc un mécanisme d'évaluation et d'impression de la valeur a du sens dans presque toutes les situations.
Deuxièmement, ces langages découragent la programmation avec des effets secondaires, vous pouvez donc faire des évaluations sans vous soucier de gâcher l'état global.
Troisièmement, la plupart du travail que vous effectuez dans ces langues est «au plus haut niveau»; il n'y a généralement pas de «classe» ou «espace de noms» ou autre contexte.
En revanche, C # met l'accent sur le flux de contrôle de programmation avec des instructions qui produisent des effets secondaires, et ces instructions sont toujours dans plusieurs conteneurs imbriqués - un espace de noms, une classe, une méthode, etc.
Ce sont donc toutes des choses qui rendent plus difficile pour C # d'avoir un REPL, mais certainement pas impossible . Nous aurions juste besoin de comprendre quelle est la sémantique pour les instructions et les expressions qui apparaissent en dehors du contexte habituel, et quelles sont les sémantiques des mutations qui changent les liaisons de noms, etc.
Pourquoi F # a-t-il un mode interactif mais pas C #?
Parce que l'équipe F # a décidé qu'avoir une boucle REPL était un scénario prioritaire pour eux. Historiquement, l'équipe C # ne l'a pas fait. Les fonctionnalités ne sont pas implémentées à moins que ce ne soient les fonctionnalités les plus prioritaires qui correspondent au budget; jusqu'à présent, un C # REPL n'a pas été en haut de notre liste.
Le projet Roslyn a un REPL C # (et aura éventuellement un REPL VB aussi, mais il n'est pas encore prêt.) Vous pouvez télécharger un aperçu de celui-ci pour voir comment vous l'aimez sur
http://www.microsoft.com/en-us/download/details.aspx?id=27746