如何在F#映射集合中求和值
我有一个如何在F#映射集合中求和值,f#,F#,我有一个映射图,我想在这里对所有值求和 它将被用作玩具拼写校正器中的单词词典 天真的企图 let wc myMap = Map.toSeq myMap |> Seq.sumBy (fun kvp -> (snd kvp)) 错误FS071考虑添加其他类型约束< /P> 尝试1 type MapFn = Map<string,int> -> int let wc:MapFn = (function wm ->
映射图
,我想在这里对所有值求和
它将被用作玩具拼写校正器中的单词词典
天真的企图
let wc myMap =
Map.toSeq myMap
|> Seq.sumBy (fun kvp -> (snd kvp))
<强>错误FS071<强>考虑添加其他类型约束< /P> 尝试1
type MapFn = Map<string,int> -> int
let wc:MapFn = (function wm ->
Map.toSeq wm
|> Seq.sumBy (fun kvp -> (snd kvp)))
还想知道类型
Map
是否是我字典的最佳选择。Map元素是键/值对(在您的示例中是键/值对),而不是元组。因此,您应该使用kvp.Value而不是snd kvp,例如:
myMap |> Seq.sumBy(fun item -> item.Value )
或者使用Map.fold
myMap |> Map.fold (fun state key value -> state + value) 0
只需添加一点,在他的
Map.fold
示例中,使用+
运算符和初始0
状态,编译器推断出您的函数最通用的类型是Map
myMap |> Seq.sumBy(fun item -> item.Value )
myMap |> Map.fold (fun state key value -> state + value) 0