Seqいつ選択するかについてのあなたの要約はかなり良いと思います。追加のポイントを次に示します。
- 関数を記述するときにデフォルトで使用
Seqします。これは、関数が任意の .NET コレクションで動作するためです。
- または
Seqのような高度な機能が必要な場合に使用しますSeq.windowedSeq.pairwise
Seqデフォルトで選択するのが最良の選択肢だと思いますが、いつ別のタイプを選択するのでしょうか?
パターンListを使用した再帰的な処理が必要な場合に使用します
(標準ライブラリでは利用できない機能を実装するため)。head::tail
Listステップバイステップで作成できる単純な不変データ構造が必要な場合に使用します
(たとえば、あるスレッドでリストを処理する必要がある場合 - 統計を表示する必要がある場合) を受け取り、同時に別のスレッドでリストの作成を続けるより多くの値、つまりネットワーク サービスから)
短いリストを使用するList場合に使用 - リストは、値がしばしば空のリストを表す場合に使用するのに最適なデータ構造です。そのシナリオでは非常に効率的です。
Array値型の大規模なコレクションが必要な場合に使用します
(配列はデータをフラット メモリ ブロックに格納するため、この場合はメモリ効率が高くなります)。
Arrayランダム アクセスまたはより高いパフォーマンス (およびキャッシュの局所性) が必要な場合に使用します。