Я ищу постоянную структуру данных, похожую на массив (но неизменяемую), позволяющую выполнять быстрые операции индексации, добавления, добавления и итерации (хорошая локальность).
Clojure обеспечивает постоянный вектор, но это только для быстрого добавления. Вектор Scala эффективно добавляет и добавляет в постоянное время, но я не могу понять, как он реализован, поскольку он основан на той же структуре данных (векторное преобразование с растровым отображением), что и вектор Clojure, и, как я понимаю, на основе векторного преобразования с побитовым отображением не может быстро подготовиться без некоторых уловок.
Меня интересует не готовая к использованию реализация, а описание того, как реализовать такую структуру данных самостоятельно.