Je recherche une structure de données persistante similaire à un tableau (mais immuable), permettant des opérations d'indexation, d'ajout, de pré-ajout et d'itération rapides (bonne localité).
Clojure fournit un vecteur persistant, mais ce n'est que pour un ajout rapide. Le vecteur de Scala a effectivement un ajout et un pré-ajout à temps constant, mais je ne peux pas comprendre comment il est implémenté, car il est basé sur la même structure de données (tri vectoriel bit-mappé) que le vecteur Clojure et, si je comprends bien, le trie vectoriel bit-mappé ne peut pas avoir un préfixe rapide sans quelques astuces.
Je ne suis pas intéressé par l'implémentation prête à l'emploi, mais par une description de la façon d'implémenter une telle structure de données moi-même.