288
правок
Изменения
→Интерфейс
Мы называем структуру данных (как реализацию абстрактного типа данных англ.ATD) полностью персистентной, если она эффективно реализует все операции предполагаемого, полностью персистентного ADT.}}
===Интерфейс===
* [X] статический конструктор, который принимает элемент X и возвращает массив, который содержит X в качестве его единственного элемента.
* '''LENGTH''' [A] возвращает длину массива A.
* '''TAIL'''(''A'',''i'') принимает на вход массив ''A'' = ["a"<sub>0</sub>,...,an−1] и производный int, возвращает массив [''amax(''i'',0)'' ,...,''a''n−1]. Если ''i'' ≥ ''n'', результатом будет [].
* '''B''' - структура, то ''seq (''B'')'' обозначает строку, которая представлена ''B''.
Основываясь на вышеприведенных операциях, ADT может быть расширен следующими операциями:
* '''LEFTPART'''(A): возвращает (non-deterministically) массив, представляющий последовательность префикса A.
* ''' RIGHTPART'''(A): возвращает (non-deterministically) массив, представляющий последовательность суффикса A.
===Реализация персистентных массивом в виде сбалансированных деревьев===