Так я получил эту функцию, которая принимает список в качестве аргументаLISP изменить список, передаваемый в качестве аргумента
(defun do-transf (lst)
...
мой первоначальный LST есть ((NIL NIL) (NIL NIL)) но в конце концов я хочу ПЛС становится
(NIL NIL NIL NIL)
пример
(defvar a (list (list NIL NIL) (list NIL NIL)))
(do-transf a)
(NIL NIL NIL NIL)
-> дает правильный ответ, но когда я вызова списка это не будет ответ
((NIL NIL) (NIL NIL)) -> я не хочу этого
Я понимаю, что вы хотите, чтобы это было разрушительным (из комментариев по одному из ответов), но как именно? В первом случае 'a' - это список из двух элементов (каждый из которых равен' (nil nil) ', но назовем их' x' и 'y' на данный момент). Поэтому 'a' is' (x. (Y. Nil)) ', то есть список из двух cons-ячеек, назовем их' xc' и 'yc'. Результатом, который вы хотите, является '(n1. (N2. (N3. (N4. Nil))))' ('n' означает' nil'), который представляет собой список из четырех cons-ячеек. 'xc' и' yc' могут быть использованы повторно, но откуда взялись другие два? –