ocaml中的一元减号和一元波浪号减号运算符有什么区别?

我正在学习 OCaml,我正在阅读的文档和书籍在某些方面不是很清楚。

简单来说,两者之间有什么区别

-10

~-10

对我来说,它们似乎是一样的。我遇到过其他试图解释这些差异的资源,但它们似乎用我还不熟悉的术语来解释,因为到目前为止我唯一知道的是变量。

回答

事实上,-是一个二元运算符,所以有些表达式可能是不明确的:f 10 -20被视为(f 10) - 20。例如,让我们想象这个虚拟函数:

let f x y = (x, y)

如果我想生成元组,(10, -20)我会天真地写一些类似的东西,f 10 -20这会导致我出现以下错误:

# f 10 -20;;
Error: This expression has type 'a -> int * 'a
       but an expression was expected of type int

因为表达式被计算为(f 10) - 20(所以是一个函数的减法!!)所以你可以写这样的表达式:f 10 (-20),它是有效的,或者f 10 ~-20因为~-(和~+~-. ~+.对于浮点数)是一元运算符,所以适当地尊重前降。


以上是ocaml中的一元减号和一元波浪号减号运算符有什么区别?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>