我正在尝试使用以下帮助函数来获取列表的平均值:
let rec foldl f l b = match l with
| [] -> b
| x :: l -> foldl f l (f x b);;
let avg l = foldl (fun x acc -> let x = (a,b) in avv = (a +. acc) /. (b + 1)) l 0;;
但是它不断地给我一个又一个的错误
需要它的更正版本
实现正确平均值的一种简单方法是用
sum
和 len
(gth) 来实现,这两者都可以直接用 foldl
来写:
let sum l = foldl (+.) l 0.0;;
let len l = foldl (fun _ n -> n + 1) l 0;;
let avg l = sum l /. float_of_int (len l)
(我们也可以使用
len l
、+.
和 1.0
使 0.0
返回浮点数,而不是使用 float_of_int
进行转换,但这没有多大意义)