我有一些问题会再次改变列表列表。我有一个列表,它看起来像这样。
val p5PrimeFactorization : int list list =
[[1]; [2]; [3]; [2; 2]; [5]; [3; 2]; [7]; [2; 2; 2]; [3; 3]; [5; 2]; [11];
[3; 2; 2]; [13]; [7; 2]; [5; 3]; [2; 2; 2; 2]; [17]; [3; 3; 2]; [19];
[5; 2; 2]]
现在我想将每个列表转换为所有条目的产品。现在这个工作
[for n in 2..20 -> primeFactors n 2 []]
|> List.map (List.sum)
但这不是..
[for n in 2..20 -> primeFactors n 2 []]
|> List.map (List.fold (fun acc elem -> acc * elem))
似乎问题在于它将acc
和elem
的类型推断为int list
类型,这是不正确的。我不明白为什么List.sum
基本上做同样的事情,除了它返回所有数字的总和,工作,但我的文件夹不会。
答案 0 :(得分:4)
在第二个示例中,您尚未指定折叠的初始值。
你可能意味着像
|> List.map (List.fold (fun acc elem -> acc * elem) 1)