F # 'nin etkileşimli konsola sahip olmasına izin veren ancak C # için uygulanmasını zorlaştıran diller hakkında temel olarak farklı bir şey var mı?
Evet.
F #, sırayla Lisp ve Scheme gibi dillerden etkilenen ML programlama dilinin soyundan gelir. Bu diller ilk günden itibaren üç güzel özelliğe sahip olacak şekilde tasarlandı.
Birincisi, bu diller gerçekten yok beyanlara C # onları düşünmek yolu. Aksine, hemen hemen her şey bir değeri olan bir ifadedir , bu yüzden değeri değerlendir ve ardından yazdır yöntemi hemen hemen her durumda bir anlam ifade eder.
İkincisi, bu diller programlamayı yan etkilerden vazgeçirir, böylece küresel durumu bozacağınızdan endişelenmeden değerlendirme yapabilirsiniz.
Üçüncüsü, bu dillerde yaptığınız işlerin çoğu “üst seviyede”; genellikle "sınıf" veya "ad alanı" veya başka bir bağlam yoktur.
Buna karşılık C #, yan etki üreten ifadelerle programlama akışını vurgular ve bu ifadeler her zaman çoklu iç içe kaplarda bulunur - ad alanı, sınıf, yöntem vb.
Yani bunların hepsi C # 'nın REPL almasını zorlaştıran şeyler , fakat kesinlikle imkansız değil . Sadece anlambilimin, genel bağlamın dışında görünen ifadeler ve ifadeler için ne anlama geldiğini ve anlambilimin, ad bağlamalarını değiştiren mutasyonların ne olduğunu çözmemiz gerekir.
Neden F # etkileşimli bir moda kullanıyor ama C # değil?
Çünkü F # ekibi bir REPL döngüsüne sahip olmanın onlar için öncelikli bir senaryo olduğuna karar verdi. C # ekibi tarihsel olarak sahip değil. Özellikler bütçeye uyan en yüksek öncelikli özellikler olmadıkça uygulanmaz; Şimdiye kadar, bir C # REPL listemiz başında değildi.
Roslyn projesinde bir C # REPL var (ve sonunda bir VB REPL de olacak, ancak henüz hazır değil.) Nasıl sevdiğini görmek için önizleme sürümünü indirebilirsiniz.
http://www.microsoft.com/en-us/download/details.aspx?id=27746