为什么F#具有一元加运算符?

某些语言使用一元加运算符进行隐式转换,例如将字符串强制为数字(例如Javascript)或将小数字类型转换为int(例如大多数基于C的语言),或者在重载运算符时使用.

因为一元加号主要用于这样的黑客目的,而且由于F#不执行自动扩展转换,所以F#包含了一元加号.

令我惊奇的是,Haskell没有一元加号运算符.由于F#设计受到Haskell的影响,我很好奇为什么当Haskell显然没有时F#需要一元加号.

你可以举一个在F#中一元加号的可信用途的例子吗?如果你不能,为什么它包括在语言中?

我将总结一下扩展的意见.可能的原因(直到给出更权威的答案):

>与OCaml的一致性,从中导出F#(如果你做错了什么/不必要的,最好是继续这样做,以便人们知道要做什么:-))
>重载(主要用于自定义类型)
>对称与一元否定

翻译自:https://stackoverflow.com/questions/7998416/why-does-f-have-a-unary-plus-operator

转载注明原文:为什么F#具有一元加运算符?