在Ocaml中调用函数内部函数时出现语法错误

在Ocaml中调用函数内部函数时出现语法错误,ocaml,Ocaml,调用f和g函数lp并将其分配给y和z时,我遇到语法错误 let lp m = let y = f m in let z = g y (List.length y) m; 以下是我的完整代码: open Printf open Format let regraUm m = m/2 let regraDois m = ((m / 10) mod 10) * (m mod 10) let regraTres m = 42 let f m = let l

调用fg函数lp并将其分配给yz时,我遇到语法错误

let lp m = 
    let y = f m in
    let z = g y (List.length y) m;
    
以下是我的完整代码:

open Printf
open Format

let regraUm m = m/2
  
let regraDois m = ((m / 10) mod 10) * (m mod 10)

let regraTres m = 42

let f m =
    let list = ref [] in
        if ((m mod 2) = 0) then list := 1::!list;
        if ((m mod 3) = 0) || ((m mod 4) = 0) then list := 2::!list;
        if ((m mod 5) = 0) then list := 3::!list;
        !list


let g list len m =
    let res = ref [] in
    for i = 0 to (len-1) do
        let regra = List.nth list i in
            if (regra = 1) then res := (m - (regraUm m))::!res;
            if (regra = 2) || ((m mod 4) = 0) then res := (m - (regraDois m))::!res;
            if (regra = 3) then res := (m - (regraTres m))::!res;
    done;
    !res


let lp m = 
    let y = f m in
    let z = g y (List.length y) m;
语法错误:

ocamlopt regras.ml -o r
File "regras.ml", line 33, characters 4-4:
Error: Syntax error

fg在函数外部使用时工作正常。

let绑定需要在中的
后面附加一些表达式,在您的情况下,这些表达式不存在。在这种情况下,您的代码要么将
z
添加为表达式,要么删除绑定,只保留表达式

设lpm=
设y=fmin
设z=gy(List.length y)m in
Z
还是这个

设lpm=
设y=fmin
g y(列表长度y)m