这些语言在本质上有什么不同,这些语言允许F#拥有交互式控制台,但是很难为C#实现它?
是。
F#是ML编程语言的后代,而ML编程语言又受到Lisp和Scheme等语言的严重影响。这些语言从第一天开始就被设计为具有三个不错的特性。
首先,这些语言实际上并没有像您在C#中那样对待语句。而是,几乎所有事物都是具有值的表达式,因此在几乎每种情况下,评估然后打印价值机制都是有意义的。
其次,这些语言不鼓励带有副作用的编程,因此您可以进行评估而不必担心会弄乱全局状态。
第三,您使用这些语言所做的大部分工作都是“顶级的”。通常没有任何封闭的“类”或“命名空间”或其他上下文。
相比之下,C#强调使用产生副作用的语句进行编程控制流,并且这些语句始终位于多个嵌套容器中-命名空间,类,方法等。
因此,所有这些使C#拥有REPL 变得更加困难,但当然并非不可能。我们只需要弄清楚出现在普通上下文之外的语句和表达式的语义是什么,以及改变名称绑定的突变的语义是什么,等等。
为什么F#具有交互模式而不是C#?
因为F#团队认为拥有REPL循环是他们的优先事项之一。C#团队历来没有。除非功能是符合预算的最高优先级功能,否则功能不会实现。到目前为止,C#REPL尚未排在我们的清单顶部。
Roslyn项目具有C#REPL(并且最终还将具有VB REPL,但尚未准备好。)您可以下载它的预览版,以查看您的喜欢程度。
http://www.microsoft.com/zh-cn/download/details.aspx?id=27746