List.fold_left“此表达式的类型为‘a 列表,但表达式应为‘b*’c*'d 类型

List.fold_left "This expression has type 'a list but an expression was expected of type 'b*'c*'d

对这个真的很困惑,我通常使用折叠功能没有问题,但现在由于某种原因我似乎无法让它工作,我也找不到原因。

L.fold_left(fun (a,b,c) acc -> if !x != 9 then (x:= !x+1; (a,b,c)::acc)else acc) list[];;

我也试过 1::acc 但它也不起作用。

只需注意参数的顺序:fold_left 期望第一个参数是累加器的函数(...某种程度上累加器是 "left" 参数),而 fold_right 期望一个函数,其中累加器是第二个(......累加器在右边)。
所以只写 fun acc (a,b,c) 而不是 fun (a,b,c) acc 并且你的代码将编译。