1

lisp 中是否有类似 find 的函数返回 true 而不是我们要查找的元素?

例子:

我想让它做

(find 'x '(a c x)) = t

不是

(find 'x '(a c x)) = x

另外,我问的原因是因为我试图到达列表中最深的元素。我的计划是每次递归调用它时都将列表展平。

然后我会停止递归调用

(mapcar 'atom list)

会告诉我里面的每一个原子都是真的。

你认为这是解决这个问题的好方法吗?

4

1 回答 1

1

没有这样的功能,但写一个再简单不过了:

(defun find-t (&rest args)
  (when (apply #'find args)
    t))

也可以代替(mapcar 'atom list)您使用(every #`(eql t %) list),即检查中的每个项目list是否准确t。(这#`()是我使用的 one-argument 的语法糖lambda。)

但总体而言,尚不清楚您要通过所有这些实现什么。你能详细说明你想做什么吗?

于 2012-11-01T06:26:21.823 回答