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