Каково правильное определение деструктивных и недеструктивных конструкций в LISP (или вообще). Я попытался найти фактическое значение, но я нашел только много случаев использования этих терминов без фактического их объяснения.
Я так понял, что под деструктивной функцией подразумевается функция, которая меняет значение конструкции (или переменной) - поэтому, когда я передаю список в качестве параметра функции, которая его меняет , это называется деструктивной операцией, поскольку она изменяет первоначальный список и возвращает совершенно новый. Так ли это или есть исключения?
Так, например, установить деструктивную функцию (потому что она изменяет значение x)? Я думаю, что нет, но я не знаю, как бы я это обосновал.
(set 'x 1)
Извините за, вероятно, очень простой вопрос.... Спасибо за любые ответы!