为什么“**”不会比OCaml中的否定更紧密地绑定?

时间:2009-06-02 00:53:52

标签: ocaml

this question之后,我不知道该怎么想。

在OCaml中,如果您执行类似-1.0 ** 2.0的操作(因为您需要键入浮动),您将获得1.00。根据{{​​3}},结果应为-1(如在python中)。

我无法在OCaml中找到运算符优先级的原因或明确定义...

这是因为类型系统吗?或者说下面有与p​​ow有关的事实?

2 个答案:

答案 0 :(得分:5)

正如您引用的页面所说:“一元操作员的顺序 - (通常读”减去“)的行为通常是有问题的。” - 它引用Excel和bc与O'CAML具有相同的优先级,但也说“在书面或印刷数学中”它的工作方式与Python相同。因此,基本上,在这个具体问题上没有普遍的共识。

答案 1 :(得分:1)

运算符优先级在OCaml中是语法定向的,这意味着函数标识符的第一个字符(无论是一元还是二元)根据固定序列确定运算符优先级。将此与Haskell等语言进行对比,其中可以在函数定义中指定运算符优先级,而不管使用哪些字符来形成函数标识符。