List.fold_left"此表达式具有类型'列表,但表达式需要类型' b *' c *' d

时间:2016-04-30 18:29:33

标签: ocaml fold

对这一点感到非常困惑,我通常使用折叠功能没有任何问题,但现在我似乎无法让它起作用,我找不到原因。

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

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

1 个答案:

答案 0 :(得分:2)

请注意参数的oder:fold_left期望一个函数,其中第一个参数是累加器(...有些累加器是"左"参数),而fold_right需要一个函数累加器是第二个(...累加器在右边)。
所以只需编写fun acc (a,b,c)而不是fun (a,b,c) acc,您的代码就会编译。