为什么这些加法语句在ocaml中产生不同的结果?

shp*_*laz 0 ocaml integer operators addition

我可以为OCAML找到的所有文档都同意"+"运算符仅用于整数加法.我有一个函数需要在每次递归调用时递增一个整数.功能定义:

let rec lst_act x lst c = ...
Run Code Online (Sandbox Code Playgroud)

该函数中的原始递归调用:

(lst_act x t curr+1)
Run Code Online (Sandbox Code Playgroud)

这个功能没有按预期工作,我真的不知道为什么.我决定将递归调用更改为:

(list_act x t (curr + 1))
Run Code Online (Sandbox Code Playgroud)

瞧,它有效.如果+运算符仅用于ocaml中的整数加法,我不明白这些语句是如何不同的.

有人可以解释一下这个差异,以及"+"运算符的每个用途是什么吗?谢谢!

myr*_*cat 6

函数应用程序的优先级高于+,因此编写它的第一种方式相当于:

((lst_act x t curr) + 1)
Run Code Online (Sandbox Code Playgroud)