F# 使用List.fold进行类型推断
我再次转换列表时遇到一些问题。我有一个整数列表,看起来像这样F# 使用List.fold进行类型推断,f#,type-inference,fold,F#,Type Inference,Fold,我再次转换列表时遇到一些问题。我有一个整数列表,看起来像这样 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]] 现在我想将每个列表转
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
除了返回所有数字的总和外,它基本上做相同的事情,但我的文件夹不起作用。在第二个示例中,您没有指定折叠的初始值
你的意思可能是
|> List.map (List.fold (fun acc elem -> acc * elem) 1)
在第二个示例中,尚未指定折叠的初始值 你的意思可能是
|> List.map (List.fold (fun acc elem -> acc * elem) 1)