高速インデックス作成と高速追加の両方をサポートする Haskell のデータ構造を探しています。これは、再帰から生じるメモ化の問題です。
ベクトルが c++ で動作する方法 (これは変更可能ですが、この場合は問題にならないはずです) から、(償却された) O(1) 追加と O(1) インデックス作成の両方を持つ不変ベクトルが可能であるように思われます (わかりました、そうではありません、この質問へのコメントを参照してください)。これは Haskell で可能ですか、それとも (AFAICT とにかく) O(1) 追加と O(log(min(i,ni))) インデックスを持つ Data.Sequence を使用する必要がありますか?
これに関連して、Haskell の初心者として、Haskell のデータ構造に関する実用的で簡潔なガイドを切望していることに気づきました。理想的には、これにより、最も実用的なデータ構造のかなり包括的な概要と、パフォーマンス特性、およびそれらが実装されている Haskell ライブラリへのポインタが得られるでしょう。たくさんの情報が飛び交っているように見えますが、少し散らかっていることに気付きました。求めすぎですか?