在OCaml中,如果您执行类似-1.0 ** 2.0的操作(因为您需要键入浮动),您将获得1.00。根据{{3}},结果应为-1(如在python中)。
我无法在OCaml中找到运算符优先级的原因或明确定义...
这是因为类型系统吗?或者说下面有与pow有关的事实?
答案 0 :(得分:5)
正如您引用的页面所说:“一元操作员的顺序 - (通常读”减去“)的行为通常是有问题的。” - 它引用Excel和bc与O'CAML具有相同的优先级,但也说“在书面或印刷数学中”它的工作方式与Python相同。因此,基本上,在这个具体问题上没有普遍的共识。
答案 1 :(得分:1)
运算符优先级在OCaml中是语法定向的,这意味着函数标识符的第一个字符(无论是一元还是二元)根据固定序列确定运算符优先级。将此与Haskell等语言进行对比,其中可以在函数定义中指定运算符优先级,而不管使用哪些字符来形成函数标识符。