C'è qualcosa di fondamentalmente diverso nei linguaggi che consente a F # di avere la console interattiva ma rende difficile implementarlo per C #?
Sì.
F # è un discendente del linguaggio di programmazione ML, che a sua volta è stato fortemente influenzato da linguaggi come Lisp e Scheme. Queste lingue sono state progettate dal primo giorno per avere tre belle proprietà.
Innanzitutto, quelle lingue non hanno davvero delle dichiarazioni nel modo in cui le pensi in C #. Piuttosto, quasi tutto è un'espressione che ha un valore , quindi un meccanismo di valutazione e stampa del valore ha senso in quasi ogni situazione.
In secondo luogo, quei linguaggi scoraggiano la programmazione con effetti collaterali, in modo da poter effettuare valutazioni senza preoccuparsi di incasinare lo stato globale.
Terzo, la maggior parte del lavoro che svolgi in quelle lingue è "al massimo livello"; in genere non esiste alcuna "classe" o "spazio dei nomi" o altro contesto.
Al contrario, C # enfatizza il flusso di controllo della programmazione con istruzioni che producono effetti collaterali e tali istruzioni si trovano sempre in più contenitori nidificati: uno spazio dei nomi, una classe, un metodo e così via.
Quindi queste sono tutte cose che rendono più difficile per C # avere un REPL, ma certamente non impossibile . Dobbiamo solo capire quale sia la semantica per le dichiarazioni e le espressioni che appaiono al di fuori del normale contesto, e quali sono le semantiche delle mutazioni che cambiano i legami dei nomi e così via.
Perché F # ha una modalità interattiva ma non C #?
Perché il team F # ha deciso che avere un ciclo REPL era uno scenario prioritario per loro. Il team C # storicamente no. Le funzionalità non vengono implementate a meno che non siano le funzionalità con la massima priorità che rientrano nel budget; fino ad ora, un REPL C # non è stato in cima alla nostra lista.
Il progetto Roslyn ha un REPL C # (e alla fine avrà anche un REPL VB, ma non è ancora pronto.) Puoi scaricare una versione di anteprima per vedere come ti piace in
http://www.microsoft.com/en-us/download/details.aspx?id=27746