我想知道是否有一种方法可以强制getf使用相等而不是eq进行比较?我正在使用常见的lisp的ccl实现.
不,你必须使用不同的函数;大约像这样的东西可能会满足您的需要:
(defun equal-getf (plist indicator)
(second (member indicator plist :test #'equal)))
Run Code Online (Sandbox Code Playgroud)
编辑
这是一个固定版本,它将列表正确地视为键/值对:
(defun equal-getf (plist indicator)
(loop for key in plist by #'cddr
for value in (rest plist) by #'cddr
when (equal key indicator)
return value))
Run Code Online (Sandbox Code Playgroud)