Для выполнения операции замещения в древовидной структуре cons-ячеек предоставлен ряд функций. Все эти функции принимают дерево и описание того, что на что необходимо заменить. Функции имеют копирующие и деструктивные версии, а также версии в которых замещение описывается либо двумя аргументами, либо ассоциативным списком.
Правила именования для этих функций и для их именованных параметров совпадают с правилами функций для последовательностей. Смотрите раздел 14.
[Функция]
subst new old tree &key :test :test-not :key(subst new old tree) создаёт копию дерева tree, замещая элемент old элементом new. Замещение происходит в любом месте дерева. Функция возвращает модифицированную копию дерева tree. Исходный объект tree не изменяется, но итоговое дерево может иметь общие с исходным части.
Например:
Эта функция не является деструктивной. Она не изменяет car и cdr элементы уже существующего дерева. Можно определить subst так:
Смотрите также substitute, которая проводит замещение только для верхнего уровня списка.
[Функция]
nsubst new old tree &key :test :test-not :keynsubst является деструктивным аналогом subst. В дереве tree любой элемент old заменяется на new.
X3J13 voted in January 1989 to restrict user side effects; see section 7.9.
Пользователь ограничен в создании побочных действий так, как это описано в разделе 7.9
sublis выполняет замещение объектов в дереве (древовидной структуре из cons-ячеек). Первый аргумент sublis является ассоциативным списком. Второй аргумент — дерево, в котором выполняется замещение. sublis проходит по всему дереву включая листья, и если элемент встречается в качестве ключа в ассоциативном списке, то данный элемент заменяет на значение ключа. Данная операция не разрушает дерево. sublis может выполнять несколько subst операций за один раз. Например:
X3J13 voted in January 1989 to restrict user side effects; see section 7.9.
Пользователь ограничен в создании побочных действий так, как это описано в разделе 7.9
nsublis похожа на sublis но деструктивно модифицирует необходимые элементы дерева tree.
X3J13 voted in January 1989 to restrict user side effects; see section 7.9.
Пользователь ограничен в создании побочных действий так, как это описано в разделе 7.9