在 OCaml 中制作递归函数

Making recursive function in OCaml

我想制作一个递归函数,对两个值之间的整数求和。我在做:

 let rec sum_between x y = 
   if x>y then sum_between y x else
      if x=y then x else x + sum_between x+1 y ;;

但我收到错误消息:此表达式的类型为 int -> int 但表达式应为 int

类型

我做错了什么?

函数应用在OCaml中具有高优先级。当表达式是函数的参数时,您需要用括号括起来。

您的代码

sum_between x+1 y

解析如下:

(sum_between x) + (1 y)

你需要括号:

sum_between (x + 1) y

(与 Edgar Aroutiounian 的答案相同,但我希望提供更多有用的细节。)