我是Ocaml的初学者。我想跳过列表的第一个元素。
这是我的清单:令l = [1; 2; 3; 4; 5; 6; 7; 2; 1] ;;
我想在我的FOR中使用它:
let l = List.tl l;
这是我的完整代码
let l = [1;2;3;4;5;6;7;2;1];;
let n = 1;;
let counter = ref 0;;
for i = 0 to (List.length l) do
if List.hd l = n then counter := !counter + 1;
print_int(!counter);
print_string("\n");
let l = List.tl l
done;;
但是我在DONE中有错误,它说语法错误。
有人可以帮助我吗?请
提前感谢
您的问题是let
始终需要匹配的in
。完整的表达式如下所示:
let var = expr1 in expr2
由于缺少in
部分,因此出现语法错误。
但是,更深层的问题是您试图修改l
的值。您定义l
的方式是不可变的。您无法更改其值。如果要更改其值,可以将其定义为参考,就像对counter
所做的那样。
(模块的顶层使用let
的另一种形式。该形式没有匹配的in
。但是您的代码没有定义顶层名称,因此这无关。)