Seqモジュールにいくつかの集計関数を追加しようとしています。私はここに記載されている機能のいくつかの実装を見ていた:。そこにある免責事項のSeqモジュールの集計関数
https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs
ワン「この関数は、とすぐにそのシーケンスが繰り返されるよう全体の初期シーケンスを消化するシーケンスを返します。この関数は大規模または無限配列では使用しないでください。 これは、GroupByなどの多くの関数に当てはまります。
最初の質問:大規模なシーケンスを効率的に処理できる集計関数を作成する方法はありますか?私は "大"が主観的であることを知っています。私はそのような機能を書くための一般的なパターンを探しています。
2番目の質問:辞書(集計関数内で定義されている)などのコレクションが効率的にガベージコレクションされるようにするにはどうすればよいですか?辞書が範囲外になったときに辞書を収集するべきだと理解していますが、それを明示的に示す方法はありますか?辞書がスコープ内に残っているとすれば、そのどちらかで.Clear()を呼び出すことはできません。あなたの最初の質問に答えるために
'Seq.fold'の観点からは実装できない集約タイプはありますか? – ildjarn
SumBy関数のようなものはどうですか? Seqのようなもので、最初の列でグループ化し、2番目の列で集計したいとします。Seq.SumにSeq.GroupByとパイプラインを実行できますが、パフォーマンスは劣ります.. –
Bala
http ://fssnip.net/5U? – ildjarn