Apakah ada sesuatu yang berbeda secara mendasar tentang bahasa yang memungkinkan F # memiliki konsol interaktif tetapi membuatnya sulit untuk mengimplementasikannya untuk C #?
Iya nih.
F # adalah turunan dari bahasa pemrograman ML, yang pada gilirannya sangat dipengaruhi oleh bahasa seperti Lisp dan Skema. Bahasa-bahasa itu dirancang sejak hari pertama untuk memiliki tiga properti bagus.
Pertama, bahasa-bahasa itu tidak benar-benar memiliki pernyataan seperti yang Anda pikirkan dalam bahasa C #. Sebaliknya, hampir semuanya adalah ekspresi yang memiliki nilai , sehingga mekanisme evaluasi-dan-kemudian-cetak-nilai masuk akal di hampir setiap situasi.
Kedua, bahasa-bahasa itu menghambat pemrograman dengan efek samping, sehingga Anda dapat melakukan evaluasi tanpa khawatir Anda akan mengacaukan keadaan global.
Ketiga, sebagian besar pekerjaan yang Anda lakukan dalam bahasa-bahasa itu adalah "di tingkat atas"; biasanya tidak ada "class" atau "namespace" atau konteks lainnya.
Sebaliknya, C # menekankan aliran kontrol pemrograman dengan pernyataan yang menghasilkan efek samping, dan pernyataan itu selalu berada dalam beberapa wadah bersarang - namespace, kelas, metode, dan sebagainya.
Jadi ini semua hal yang membuat C # lebih sulit untuk memiliki REPL, tetapi tentu saja tidak mustahil . Kami hanya perlu mencari tahu apa arti semantik untuk pernyataan dan ekspresi yang muncul di luar konteks yang biasa, dan apa arti semantik dari mutasi yang mengubah binding nama, dan sebagainya.
Mengapa F # memiliki mode interaktif tetapi tidak C #?
Karena tim F # memutuskan bahwa memiliki loop REPL adalah skenario prioritas-satu untuk mereka. Tim C # secara historis belum. Fitur tidak dapat diimplementasikan kecuali mereka adalah fitur prioritas tertinggi yang sesuai dengan anggaran; sampai sekarang, C # REPL belum ada di daftar teratas kami.
Proyek Roslyn memiliki C # REPL (dan akhirnya akan memiliki VB REPL juga, tetapi belum siap.) Anda dapat mengunduh rilis pratinjau untuk melihat bagaimana Anda menyukainya di
http://www.microsoft.com/en-us/download/details.aspx?id=27746