gpt4 book ai didi

lisp - 为什么成员函数返回nil

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:43 25 4
gpt4 key购买 nike

我有一个列表:

*DSTATES* = ( ( list1 ) ( list2 ) ( list3 ) ... ( listn )  )

以及州名称列表,x = ( list )

*DSTATES*( (零) (三二一) (二) (三零) )

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* 的大小上有一个停止条件)永远不会终止。

我该如何解决这个问题?

最佳答案

只需执行 (member x *DSTATES* :test #'tree-equal)

这将使 member 检查成员资格。

希望对大家有帮助

how to test whether one list is a member of another

关于lisp - 为什么成员函数返回nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26088861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com