我想知道如何通过迭代列表来更新变量的值。例如,假设我想跟踪列表的变量数量。我可以做类似OCaml通过迭代列表更新值
let list = [1;2;3;4;5]
let length = 0 in
let getCount elmt =
length = length+1 in
List.iter getCount list
,但我得到因为length = length+1
我比较使用=
我这是有道理的错误This expression has type 'a -> bool
。我应该如何更新长度值?
编辑:
我试图
let wordMap =
let getCount word =
StringMap.add word (1000) wordMap in
List.fold_left getCount StringMap.empty wordlist;;
,但它不知道什么wordMap是getCount将功能...
? – cago
这只是一个例子。对于我的实际功能,而不是长度,我有一个地图,我用来存储元素的出现次数,这意味着我必须做Map.empty才能得到一个空的地图,然后我必须通过添加来更新地图它。我不知道该怎么做。 – jstnchng
在OCaml中,如果你可以:一般你应该避免突变:不要使用可变的'ref'计数器,而是使用'List.fold_left'或'fold_right'来解决这类问题。 – camlspotter