我写了一个函数,它添加了给定列表中的所有元素:
let rec add = function []->0 | h::t->h+add(t);;
现在我想编写相同的函数,但使用List.fold_left
,但我尝试了几次更改但仍然有错误。首先我尝试了这个:
let rec add = function []->0 | h::t-> add List.fold_left((fun h t-> h+t) h t);;
但是我有一个错误,我注意到 List.fold_left 返回一个 int 值,所以递归是不必要的。所以我改变了:
let add = function []->0 | h::t -> List.fold_left ( fun h t-> h+t h t);;
但我仍然收到关于错误类型的错误:
Error: This expression has type int -> 'a -> 'b
but an expression was expected of type 'a
但我不知道如何解决这个问题,有人可以解释我List.fold_left
在这个例子中如何使用吗?