【发布时间】:2011-11-03 16:26:51
【问题描述】:
某些语言使用一元加号运算符进行隐式转换,例如将字符串强制转换为数字(例如 Javascript)或将小数字类型转换为 int(例如大多数基于 C 的语言),或者在以下情况下使用重载运算符。
由于一元加号主要用于这样的骇人听闻的目的,而且由于 F# 不执行自动加宽转换,我很惊讶 F# 包含一元加号。
让我吃惊的是 Haskell 没有一元加号运算符。由于 F# 设计受到 Haskell 的影响,我很好奇为什么决定 F# 需要一元加号,而 Haskell 显然不需要。
你能举一个在 F# 中可靠使用一元加号的例子吗?如果你不能,为什么它会包含在语言中?
【问题讨论】:
-
Ocaml 有一个一元加号,名为
(~+)。我也不知道它是干什么用的。 -
我认为所有语言都有它,但没有一个使用它。它存在对称性。
-
+1 不是 ((~+) 1),而是数字 1(由词法分析器解析)。
+(1)返回-1。 -
@PeterOlson: caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html -> 整数运算
-
F# 基于 OCaml,仅受 Haskell影响。如果OCaml有,那么F#就有,是很合理的。
标签: f# unary-operator