Gibt es etwas grundlegend anderes an den Sprachen, das es F # ermöglicht, die interaktive Konsole zu haben, es aber schwierig macht, sie für C # zu implementieren?
Ja.
F # ist ein Nachkomme der ML-Programmiersprache, die wiederum stark von Sprachen wie Lisp und Scheme beeinflusst wurde. Diese Sprachen wurden vom ersten Tag an so entworfen, dass sie drei schöne Eigenschaften haben.
Erstens haben diese Sprachen keine Aussagen, wie Sie sie in C # sehen. Vielmehr ist fast alles ein Ausdruck , der einen Wert hat , so dass ein Wertevaluierungs- und Druckmechanismus in fast jeder Situation Sinn macht.
Zweitens raten diese Sprachen von der Programmierung mit Nebenwirkungen ab, sodass Sie Auswertungen vornehmen können, ohne befürchten zu müssen, dass Sie den globalen Zustand durcheinander bringen.
Drittens ist die meiste Arbeit, die Sie in diesen Sprachen leisten, „auf höchstem Niveau“. In der Regel gibt es keine einschließenden "Klasse" oder "Namespace" oder anderen Kontext.
Im Gegensatz dazu betont C # den Ablauf der Programmiersteuerung mit Anweisungen, die Nebenwirkungen hervorrufen, und diese Anweisungen befinden sich immer in mehreren verschachtelten Containern - einem Namespace, einer Klasse, einer Methode usw.
Das sind also alles Dinge, die es für C # schwieriger machen , eine REPL zu haben, aber sicherlich nicht unmöglich . Wir müssen nur herausfinden, was die Semantik für Aussagen und Ausdrücke ist, die außerhalb des üblichen Kontexts erscheinen, und was die Semantik für Mutationen ist, die die Namensbindungen ändern, und so weiter.
Warum hat F # einen interaktiven Modus, aber kein C #?
Weil das F # -Team entschied, dass das Vorhandensein einer REPL-Schleife für sie ein vorrangiges Szenario war. Das C # -Team hat das historisch nicht. Funktionen werden nur implementiert, wenn sie die Funktionen mit der höchsten Priorität sind, die in das Budget passen. Bisher stand ein C # REPL nicht ganz oben auf unserer Liste.
Das Roslyn-Projekt hat eine C # -REPL (und wird eventuell auch eine VB-REPL haben, die jedoch noch nicht fertig ist.) Sie können eine Vorschauversion davon herunterladen, um zu sehen, wie es Ihnen gefällt
http://www.microsoft.com/en-us/download/details.aspx?id=27746