gpt4 book ai didi

ocaml - 使用单个 fold_left 查找列表的长度和总和

转载 作者:行者123 更新时间:2023-12-04 02:10:10 26 4
gpt4 key购买 nike

我一直在努力思考 fold_leftfold_right。作为练习,我一直在尝试重写 fold_leftfold_right 中的很多函数来加强我的知识。例如,在查找列表的平均值时,我会使用折叠来计算列表的总和和长度。

let sum_l xs = List.fold_left (fun x y -> x + y) 0 xs;;
let len_l xs = List.fold_left (fun x _ -> x + 1) 0 xs;;

然后我会继续寻找平均值。这是我的问题。是否可以将这两个值都放在一个 fold_left 中?我应该如何编写匿名函数?谢谢!

最佳答案

您只需使用一对作为您的累加器:

# let sum_and_len xs = List.fold_left (fun (s,l) x -> s+x, l+1) (0,0) xs;;
val sum_and_len : int list -> int * int = <fun>
# sum_and_len [0;1;2;3];;
- : int * int = (6, 4)

关于ocaml - 使用单个 fold_left 查找列表的长度和总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18910973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com