在Ocaml中调用函数内部函数时出现语法错误
调用f和g函数lp并将其分配给y和z时,我遇到语法错误在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
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
f和g在函数外部使用时工作正常。let绑定需要在中的
后面附加一些表达式,在您的情况下,这些表达式不存在。在这种情况下,您的代码要么将z
添加为表达式,要么删除绑定,只保留表达式
设lpm=
设y=fmin
设z=gy(List.length y)m in
Z
还是这个
设lpm=
设y=fmin
g y(列表长度y)m