gpt4 book ai didi

OCaml 通过列表迭代更新值

转载 作者:行者123 更新时间:2023-12-01 04:50:16 29 4
gpt4 key购买 nike

我想知道如何通过列表的迭代来更新变量的值。例如,假设我想跟踪列表的变量数。我可以做类似的事情

let list = [1;2;3;4;5]
let length = 0 in
let getCount elmt =
length = length+1 in
List.iter getCount list

但我得到错误 This expression has type 'a -> bool 这是有道理的,因为在 length = length+1 我正在比较使用 =。我应该如何更新长度值?

编辑:

我试过了

let wordMap =
let getCount word =
StringMap.add word (1000) wordMap in
List.fold_left getCount StringMap.empty wordlist;;

但它不知道getCount函数中的wordMap是什么...

最佳答案

@PatJ 进行了很好的讨论。但在实际代码中,您只需使用折叠。折叠的目的正是您所要求的,即在遍历列表时保持某种状态(您喜欢的任何类型)。

学会用折叠的方式思考是函数式编程的一项基本技能,因此值得学习。

一旦你擅长折叠,你就可以根据具体情况决定是否需要可变状态。在几乎所有情况下,您都不需要。

(你绝对可以在遍历列表时使用折叠来积累 map 。)

关于OCaml 通过列表迭代更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986706/

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