【发布时间】:2012-12-31 01:06:03
【问题描述】:
我写了一个函数,它添加了给定列表中的所有元素:
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?
【问题讨论】:
标签: ocaml