2

我在一本旧的通用 lisp 书中找到了代码,并在 lispworks 和 clozure cl 中尝试了它。但是他们俩都无法运行代码。此代码用于删除对:(author1 . john)

(setf q '((author1 . john) (author2 . tony) (author3 . fred)))

(setf (assoc 'author1 q) nil)

谢谢你的时间

4

2 回答 2

4

您无法就地操作列表,但您可以通过功能方式获取没有指定键的新列表并重新分配变量:

(setf q (remove 'author1 q :key #'car))
于 2012-01-02T20:49:46.687 回答
2

该函数(SETF ASSOC)未在 ANSI Common Lisp 中定义,也无法移植定义(ANSI CL 规范不允许为 CL 包中的符号编写 SETF 函数)。

您需要以其他方式删除相应的对。

于 2012-01-02T18:13:10.573 回答