Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
lisp 中是否有类似 find 的函数返回 true 而不是我们要查找的元素?
例子:
我想让它做
(find 'x '(a c x)) = t
不是
(find 'x '(a c x)) = x
另外,我问的原因是因为我试图到达列表中最深的元素。我的计划是每次递归调用它时都将列表展平。
然后我会停止递归调用
(mapcar 'atom list)
会告诉我里面的每一个原子都是真的。
你认为这是解决这个问题的好方法吗?
没有这样的功能,但写一个再简单不过了:
(defun find-t (&rest args) (when (apply #'find args) t))
也可以代替(mapcar 'atom list)您使用(every #`(eql t %) list),即检查中的每个项目list是否准确t。(这#`()是我使用的 one-argument 的语法糖lambda。)
(every #`(eql t %) list)
list
t
#`()
lambda
但总体而言,尚不清楚您要通过所有这些实现什么。你能详细说明你想做什么吗?