如何检查返回的项目是否为列表本身?

Fre*_*ddy 1 lisp common-lisp

早上 -

我试图看看是否有办法检查从列表返回的项目是否是列表本身.

例如

(elt '(a (b c) d) 1)
Run Code Online (Sandbox Code Playgroud)

有没有办法检查返回的项目是否为列表?

我试过用长度,

(length (elt '(a (b c) d) 1))
Run Code Online (Sandbox Code Playgroud)

但如果给出的项目不是列表,则会抛出错误.

总之,我正在寻找一种方法来遍历列表中的每个元素,并检查它是否是列表.

谢谢

mei*_*rav 9

listp告诉你:

(listp (elt '(a (b c) d) 1))
Run Code Online (Sandbox Code Playgroud)

  • 很好,我喜欢O(1)中CL中的`listp`,因为虚线和圆形列表也被认为是列表.在Scheme世界中,`list?`只对正确的列表返回true,所以(除了具有不可变的conses的实现,比如Racket),`list?`是O(n),这意味着我通常会犹豫是否建议使用`list?`作为一般用途. (4认同)