F#で対話型コンソールを使用できるようにするが、C#で実装するのが困難になる言語について根本的に異なるものはありますか?
はい。
F#はMLプログラミング言語の子孫であり、LispやSchemeなどの言語の影響を強く受けています。これらの言語は、3つの優れたプロパティを持つように初日から設計されました。
まず、これらの言語には、C#で考えているようなステートメントが実際にはありません。むしろ、ほとんどすべてがvalueを持つ式であるため、ほとんどすべての状況で値を評価して印刷するメカニズムが理にかなっています。
第二に、これらの言語は副作用を伴うプログラミングを妨げるため、グローバルな状態を台無しにすることを心配せずに評価を行うことができます。
第三に、これらの言語で行う作業のほとんどは「トップレベル」です。通常、「クラス」や「名前空間」などのコンテキストを囲むことはありません。
対照的に、C#は、副作用を引き起こすステートメントを使用したプログラミング制御フローを強調しており、これらのステートメントは常に名前空間、クラス、メソッドなどの複数のネストされたコンテナーにあります。
したがって、これらはすべて、C#がREPLを持つのを難しくするものですが、確かに不可能ではありません。通常のコンテキストの外にあるステートメントや式のセマンティクスが何であるか、名前バインディングを変更する突然変異のセマンティクスが何であるかなどを把握する必要があります。
F#にインタラクティブモードがあり、C#がないのはなぜですか?
F#チームは、REPLループを作成することが優先順位1のシナリオであると判断したためです。C#チームはこれまでそうしていませんでした。機能は、予算に収まる最も優先度の高い機能でない限り、実装されません。これまで、C#REPLはリストのトップにはいませんでした。
RoslynプロジェクトにはC#REPLがあります(最終的にはVB REPLもありますが、まだ準備ができていません。)プレビューリリースをダウンロードして、気に入った方法を確認できます。
http://www.microsoft.com/en-us/download/details.aspx?id=27746