3.12. TABLE: РАБОТА С ТАБЛИЦАМИ

$func TABLE = s.Tab;

$func BIND s.Tab (e.Key) (e.Val) = ;

$func UNBIND s.Tab e.Key = ;

$func? LOOKUP s.Tab e.Key = e.Val;

$func? IN-TABLE? s.Tab e.Key = ;

$func DOMAIN s.Tab = e.Domain ;

$func TABLE-COPY s.Tab = s.TabCopy;

$func REPLACE-TABLE s.TargetTable s.SourceTable = ;


TABLE создает новую пустую таблицу и выдает символ-ссылку на эту таблицу.


BIND связывает ключ e.Key со значением e.Val в таблице, на которую ссылается s.Tab.


UNBIND удаляет из таблицы, на которую ссылается s.Tab, ключ e.Key и связанное с ним значение, если такой ключ был в таблице.


LOOKUP находит в таблице, на которую ссылается s.Tab, значение, связанное с ключом e.Key и выдает его. Если такого ключа в таблице нет - результатом является $fail(0).


IN-TABLE? проверяет, что ключ e.Key находится в таблице, на которую ссылается s.Tab.


DOMAIN выдает список ключей, содержащихся в таблице, на которую ссылается s.Tab. А именно, если таблица содержит множество ключей {Oe1, Oe2, ..., Oen}, e.Domain имеет вид

(Oe1)(Oe2) ... (Oen)

где порядок расположения ключей описанием языка не определен.


TABLE-COPY создает новую таблицу, копирует в него содержимое таблицы, на которую ссылается s.Tab, и выдает в качестве результата ссылку на новую таблицу.


REPLACE-TABLE уничтожает прежнее содержимое таблицы, на которую ссылается s.TargetTable, и заменяет его на копию содержимого таблицы, на которую ссылается s.Source