2012-09-20 23 views
1

早上 -如何檢查返回的項目是否是一個列表本身?

我想看看有沒有辦法來檢查從列表返回的項目是否是一個列表本身。

例如

(elt '(a (b c) d) 1) 

有沒有一種方法來檢查返回的項目是一個列表?

我使用長度試過,

(length (elt '(a (b c) d) 1)) 

,但如果考慮到是不是拋出一個錯誤列表中的項目。

總之,我正在尋找一種方法來通過列表中的每個元素,並檢查它是否是一個列表。

謝謝

+0

看到我的回答波紋管 – meirrav

回答

9

的listp告訴你:

(listp (elt '(a (b c) d) 1)) 
+0

可悲的是,我一直在使用integerp了一下.. -1自己的俯瞰明顯。 – Freddy

+4

不錯,我喜歡O(1)中CL中的'listp',因爲虛線和圓形列表也被認爲是列表。在Scheme世界中,'list?'只對正確的列表返回true,所以(除了不可變的conses實現,比如Racket),list?是O(n),這意味着我通常不願意建議使用'list?'作爲一般用途。 –

相關問題