Я нахожу код в старой общей книге LISP и пробую его в Lispworks и Clozure cl. Но оба они не могут запустить код. Этот код используется для удаления пары: (author1 . john).
(author1 . john)
(setf q '((author1 . john) (author2 . tony) (author3 . fred))) (setf (assoc 'author1 q) nil)
Спасибо за ваше время
Вы не можете управлять списком на месте, но вы можете получить новый список без указанного ключа функциональным способом и переназначить переменную:
(setf q (remove 'author1 q :key #'car))
Функция (SETF ASSOC) не определена в ANSI Common Lisp и не может быть определена переносимо (спецификация ANSI CL не позволяет писать функцию SETF для символа в пакете CL).
(SETF ASSOC)
Вам нужно удалить соответствующую пару другим способом.