我是
LISP
的新手,所以对于可能不聪明的问题提前表示歉意。
现在需要检查给定的符号是否是给定符号列表的成员。函数 position
在大多数情况下工作良好,但是当符号由 gensym
函数生成时就会出现问题:
(position '#:G808 (list '#:G808))
我期望
0
作为此查询的响应,但得到的是 nil
。我怀疑 #
和 :
有一些特殊含义,但是项目 '#:G808
无论如何都属于列表 '#:G808
不是吗?
GENSYM
每次使用时都会创建一个新符号,因此 #:G808
的这两次使用实际上是具有相同名称的不同符号。
将其分配给一个变量,这样您将拥有相同的符号。
(let ((sym (gensym)))
(position sym (list sym)))