Ich suche nach einer dauerhaften Datenstruktur ähnlich dem Array (aber unveränderlich), die schnelle Indizierungs-, Anhänge-, Voranstellungs- und Iterationsoperationen (gute Lokalität) ermöglicht.
Clojure bietet dauerhaften Vektor, ist jedoch nur zum schnellen Anhängen geeignet. Scalas Vektor hat effektiv ein zeitlich konstantes Anhängen und Voranstellen, aber ich kann nicht verstehen, wie es implementiert ist, da es auf derselben Datenstruktur (Bitmap-Vektor-Trie) wie der Clojure-Vektor und, wie ich verstehe, auf Bit-Mapping-Vektor-Trie basiert kann ohne schnelle Tricks nicht schnell voranstellen.
Ich bin nicht an einer gebrauchsfertigen Implementierung interessiert, sondern an einer Beschreibung, wie eine solche Datenstruktur selbst implementiert werden kann.