Czy jest coś zupełnie innego w językach, które pozwalają F # mieć interaktywną konsolę, ale utrudniają jej implementację w C #?
Tak.
F # jest potomkiem języka programowania ML, który z kolei był pod silnym wpływem języków takich jak Lisp i Scheme. Te języki zostały zaprojektowane od pierwszego dnia, aby miały trzy ładne właściwości.
Po pierwsze, w tych językach tak naprawdę nie ma wyrażeń tak, jak myślisz o nich w języku C #. Raczej prawie wszystko jest wyrażeniem, które ma wartość , więc mechanizm oceny i wydrukowania wartości ma sens w prawie każdej sytuacji.
Po drugie, te języki zniechęcają do programowania z efektami ubocznymi, więc możesz dokonywać ocen bez obawy, że popsuniesz globalny stan.
Po trzecie, większość pracy wykonywanej w tych językach odbywa się „na najwyższym poziomie”; zazwyczaj nie ma obejmującej „klasy”, „przestrzeni nazw” lub innego kontekstu.
Natomiast C # kładzie nacisk na programowanie przepływu sterowania za pomocą instrukcji, które wywołują skutki uboczne, a te instrukcje są zawsze w wielu zagnieżdżonych kontenerach - przestrzeni nazw, klasie, metodzie i tak dalej.
Są to więc wszystko, co utrudnia CPL posiadanie REPL, ale z pewnością nie jest niemożliwe . Musimy tylko dowiedzieć się, co to jest semantyka dla wyrażeń i wyrażeń, które pojawiają się poza zwykłym kontekstem, i co to jest semantyka mutacji, które zmieniają powiązania nazw itp.
Dlaczego F # ma tryb interaktywny, ale nie C #?
Ponieważ zespół F # zdecydował, że posiadanie pętli REPL jest dla nich scenariuszem priorytetowym. Zespół C # historycznie nie. Funkcje nie zostaną wdrożone, chyba że są funkcjami o najwyższym priorytecie, które mieszczą się w budżecie; do tej pory CPL REPL nie było na szczycie naszej listy.
Projekt Roslyn ma CPL REPL (i ostatecznie będzie miał również VB REPL, ale nie jest jeszcze gotowy.) Możesz pobrać jego wersję zapoznawczą, aby zobaczyć, jak ci się podoba
http://www.microsoft.com/en-us/download/details.aspx?id=27746