我在旧的常见的lisp书中找到了代码,并在lispworks和clozure cl中尝试了。但是他们都无法运行代码。此代码用于删除对:(author1 . john)
。
(setf q '((author1 . john) (author2 . tony) (author3 . fred)))
(setf (assoc 'author1 q) nil)
感谢您的时间
答案 0 :(得分:4)
您无法就地操作列表,但是您可以以功能方式获取没有指定键的新列表并重新分配变量:
(setf q (remove 'author1 q :key #'car))
答案 1 :(得分:2)
函数(SETF ASSOC)
未在ANSI Common Lisp中定义,并且无法进行可移植定义(ANSI CL规范不允许为CL包中的符号写入SETF函数)。
您需要以其他方式删除相应的对。