Ocaml错误消息错误:分析错误:[binding](in[expr])之后应为“in”

Ocaml错误消息错误:分析错误:[binding](in[expr])之后应为“in”,ocaml,Ocaml,我试图写一个函数,计算n到m的除数,其中current是当前的除数,count是到目前为止的除数总数 最后一行代码的[expr]中的[binding]之后会出现错误:Parse error:in,但我不知道in怎么会是最后一行。我在这里做错了什么 (* Counts the number of divisors*) let rec count_divisors (n: int) (m: int) (current: int) (count: int): int =

我试图写一个函数,计算n到m的除数,其中current是当前的除数,count是到目前为止的除数总数

最后一行代码的[expr]中的[binding]之后会出现错误:Parse error:in,但我不知道in怎么会是最后一行。我在这里做错了什么

    (* Counts the number of divisors*)
    let rec count_divisors (n: int) (m: int) (current: int) (count: int): int =
       if count > m || current > n then count
       else  if (n mod current) = 0 then count_divisors n m (current+1) (count+1)
       else (count_divisors n m (current+1) count);;

我假设你在另一个函数中使用这个函数,因为它有很多参数,而我只需要一个参数——你想计算其除数的数字,对吗

如果是,请尝试将代码更改为以下内容:

let num_divisors n =
    let rec count_divisors (n: int) (m: int) (current: int) (count: int): int =
           if count > m || current > n then count
           else  if (n mod current) = 0 then count_divisors n m (current+1) (count+1)
           else (count_divisors n m (current+1) count)
    in count_divisors n n 1 0;;