這是關於LISP我的第二個快速和愚蠢的問題,但我也有點卡住。我需要訪問列表中幾個級別的所有節點。我需要這樣的:
>> (get-symbols '(A (B (C D) E)))
(A B C D E)
我不關心訂單。你會怎麼做?我更喜歡代碼直觀性而不是效率。
感謝
這是關於LISP我的第二個快速和愚蠢的問題,但我也有點卡住。我需要訪問列表中幾個級別的所有節點。我需要這樣的:
>> (get-symbols '(A (B (C D) E)))
(A B C D E)
我不關心訂單。你會怎麼做?我更喜歡代碼直觀性而不是效率。
感謝
從OnLisp:
(defun flatten (tree)
(if (atom tree)
(mklist tree)
(nconc (flatten (car tree))
(if (cdr tree) (flatten (cdr tree))))))
你需要的是列出了flatten
功能。看看它。
我在Common Lisp中找不到那個函數(我忘了說明我必須使用哪個Lisp版本) – jesusiniesta 2010-11-01 02:31:40
(defun get-symbols (lst)
(when lst
(if (atom lst) (list lst)
(append (get-symbols (car lst))
(get-symbols (cdr lst))))))
退房http://stackoverflow.com/questions/2680864/how-to-remove-nested-parentheses-in-lisp – 2010-10-31 18:29:07
「嵌套的括號」。我沒有想到要這樣做,所以我沒有找到那個。如果它適合我,我希望如此,我應該刪除這個問題嗎? – jesusiniesta 2010-11-01 02:30:55
「拼合嵌套列表」是正確的描述。你的問題是重複的。如果你想刪除它。 – 2010-11-01 05:50:15