我有一个清单:
*DSTATES* = ( ( list1 ) ( list2 ) ( list3 ) ... ( listn ) )
状态名称列表x = ( list )
*DSTATES*
有( (zero) (three two one) (two) (three zero) )
x有(two)
。
这是我的代码:
(map '() #'(lambda (x)
(princ "Looking at transition ") (princ x)
(princ #\newline)
(if (and (eq '() (member x *DSTATES*)) (not (eq '() x)))
(progn
(princ x) (princ " is not a member of *DSTATES*")
(princ #\newline)
(setq *DSTATES* (append *DSTATES* (list x)))))
(princ "Intermediate *DSTATES* ") (princ *DSTATES*)
(princ #\newline) (princ #\newline))
trans)
当我做( eq '() ( member x *DSTATES* ) )
它总是 - 据我所知 - 返回true。由于这个*DSTATES*
变得越来越大,我的循环(*DSTATES*
大小的停止条件永远不会终止。
我该如何解决这个问题?
答案 0 :(得分:1)
只需(member x *DSTATES* :test #'tree-equal)
这会使member
检查会员资格。
希望有帮助的人