为什么ML语言(F#)与C语言(C#)相比有这么多不同的运算符?

时间:2015-03-31 10:50:43

标签: c# syntax f# operators ml

看起来它有几个更多的运算符:

https://msdn.microsoft.com/en-us/library/dd233228.aspx

VS

https://msdn.microsoft.com/en-us/library/6a71f45d.aspx

这只是让语言看起来“简洁”或历史ML根源的代价吗?

1 个答案:

答案 0 :(得分:3)

我不确定从MSDN查看这两个列表是否必然会给出公平的比较。请注意,F#表列出了符号字符用作表达式一部分的任何内容 - 包括字符串文字",注释///,预处理器指令#,引用,泛型和许多其他语法。另一方面,C#引用只列出运算符(虽然也有一些关键字)。

F#确实比C#拥有更多的运营商,但我认为差异并不像你想象的那么大。最值得注意的是:

  • 使用>>|>等功能的运算符(及其变体)
  • 使用::(前置元素)和@(连接)等列表的运算符
  • 用于处理可空值的运算符(在某些方面有许多?),尽管我认为这些更像是启用LINQ互操作的解决方法而不是F#的基本运算符

  • 有一些可变参考单元:=!的运算符 - 我认为这些主要是ML遗产,你并不经常需要它们。

所以,我认为主要的是F#只是有一些数据类型是函数式编程的核心,它有运算符来处理它们(特别是函数和列表)。另一方面,C#列表中的一些内容(typeofsizeofdelegate以及+=等都是F#中的函数或者不需要在所有)。