首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么F#有交互模式而没有C#?

为什么F#有交互模式而没有C#?
EN

Software Engineering用户
提问于 2012-07-10 18:48:33
回答 4查看 5.6K关注 0票数 33

F#从盒子里拿出一个交互式的REPL。C#没有这类的东西,事实上,如果不设置完整的项目,就很难在其中游玩(尽管LINQpad可以工作,也可以通过powershell进行操作)。

对于允许F#拥有交互式控制台但使C#难以实现的语言,有什么根本的不同吗?

由于许多年后,人们仍在讨论这个问题,我应该指出,现在有许多选择。您可以使用powershell (在每台现代windows机器上预装)来播放.Net框架。或者你可以使用LINQpad原型任意c#代码。或者您可以使用ScriptCs,也可以使用Complify.netJsil这样的在线小提琴类型环境。有很多选择。

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2012-07-10 20:49:08

对于允许F#拥有交互式控制台但使C#难以实现的语言,有什么根本的不同吗?

是。

F#是ML编程语言的后代,而ML编程语言又受到Lisp和Scheme等语言的严重影响。这些语言从第一天起就被设计成有三个很好的特性。

首先,这些语言实际上没有您在C#中看待它们的方式。相反,几乎所有的东西都是有价值的表达式,所以一个评估然后打印的价值机制在几乎每一种情况下都是有意义的。

第二,这些语言不鼓励附带副作用的编程,因此您可以进行评估,而不必担心您会破坏全局状态。

第三,您在这些语言中所做的大部分工作都是“在最高级的”;通常不包含“class”或“命名空间”或其他上下文。

相反,C#强调使用产生副作用的语句来编程控制流,这些语句总是位于多个嵌套容器中--名称空间、类、方法等等。

因此,所有这些都会使C#更难拥有REPL,但肯定不是不可能的。我们只需要弄清楚在通常上下文之外出现的语句和表达式的语义是什么,以及更改名称绑定的变化的语义是什么,等等。

为什么F#有交互模式而没有C#?

因为F#团队决定拥有一个REPL循环是一个优先级--这是他们的一个场景。C#团队历史上没有。除非它们是符合预算的最高优先级特性,否则不能实现这些特性;到目前为止,C# REPL还没有在我们的列表中占据首要位置。

罗斯林项目有一个C# REPL (最终也会有一个VB,但它还没有准备好)。您可以下载它的预览版本,以查看您对它的喜爱程度。

http://www.microsoft.com/en-us/download/details.aspx?id=27746

票数 57
EN

Software Engineering用户

发布于 2012-07-10 19:06:07

Mono有一个C# repl:http://www.mono-project.com/CsharpRepl

它甚至有一个GUI版本,允许您直接操作图形对象或创建Gtk#小部件:

票数 22
EN

Software Engineering用户

发布于 2012-07-10 20:12:17

我相信这主要是一件历史性的事情。REPL环境一直与函数式语言、包括ML族语言相关联,而F#则始终遵循这一传统。请记住,交互环境是来自功能背景的用户认为理所当然的事情,缺乏这样的功能将使VS和-通过扩展- F#处于劣势。

另一方面,这种特性在OOP社区中并不常见。

然而,许多非功能语言都可以使用REPL,包括C、Java或C#。另外,尽管它与成熟的REPL相去甚远,VS中的Autos特性表明,它肯定可以使用C#。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/156303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档