Sto cercando una struttura di dati persistente simile all'array (ma immutabile), che consenta operazioni veloci di indicizzazione, aggiunta, prepend e iterazione (buona località).
Clojure fornisce un vettore persistente, ma è solo per un'aggiunta veloce. Scala's Vector ha effettivamente un'appendice e prepend a tempo costante, ma non riesco a capire come sia implementata, poiché si basa sulla stessa struttura di dati (trie vettoriale bitmap) del vettore Clojure e, a quanto ho capito, trie vettoriale bitmap non può avere anteprime veloci senza alcuni trucchi.
Sono interessato non all'implementazione pronta per l'uso ma a una descrizione di come implementare una struttura di dati di questo tipo.