我正在嘗試向Seq模塊添加一些額外的聚合函數。我一直在尋找的一些功能的實現這裏列出:Seq模塊中的聚合函數
https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs
其中的免責條款存在的「這個函數返回,一旦該序列被反覆消化整個初始步驟的順序爲。這個函數的結果不應該與大的或無限的序列一起使用。「 許多功能都是如此,例如GroupBy。
第一個問題:是否有方法來編寫可以有效處理大型序列的聚合函數?我知道「大」是主觀的;我只是尋找一般模式來編寫這樣的功能。
第二個問題:我如何確保像Dictionary這樣的集合(在集合函數中定義的集合)被有效地垃圾收集?我知道字典應該在超出範圍時收集,但是有沒有一種方法可以明確表示?鑑於字典的範圍是保留在函數中,我不能在這個對話框中調用.Clear()。
您需要什麼類型的聚合無法用Seq.fold來實現? – ildjarn
SumBy函數怎麼樣?就像Seq一樣,你可能想按第一列進行分組,然後按第二列進行分組..你可以做一個Seq.GroupBy和管道到Seq.Sum,但是性能很差.. –
Bala
http ://fssnip.net/5U? – ildjarn