2015-09-28 78 views
-1

我想(或多或少)將列表弄平。輸入是由嵌套的列表組成,可能會引用它,並且我希望在最後列出全局變量。我檢查first是否以*開頭,但我最終得到一個包含quote的列表。檢查符號是否爲`quote`?


編輯:

我不得不處理的數據結構是這樣的:

(defparameter *colors* '(*red* *green* *blue*)) 
(defparameter *animals* '(*mouse* *elephant*)) 
(defparameter *list-to-flatten* '('*colors* 
            '*animals* 
            *some-other-parameter*)) 

我創造了像*red**mouse*基本參數名稱,因爲在原始數據的名字是不夠理想,但我仍然不得不使用它們與系統進行交互。這些參數是列表,即*mouse* - >(animal mammal small 4),並且不被平坦化。所以我寫了一個函數,將嵌套列表簡化爲這些基本參數的列表,並且該列表包含引號。

從那時起,我看到我原來收到的數據過時了,我不得不重新開始。當前數據的參數名稱的命名更爲合理,因此我不需要再處理原始問題。


我已經重讀了答案here

+3

請給我們一些細節。你的意見是什麼?預期產出是多少?什麼是'*'與它有關係?從這裏給出的描述(和你的說法,其他SO問題與你的問題無關),我很難理解你想要做什麼以及問題可能是什麼。 – Dirk

+1

你如何最終得到一個包含報價的列表?如果數據結構中有一個名爲'quote'的符號,則很明顯,生成的扁平列表將具有該符號。例如'(flatten'(a b'c)); ==>(a b quote c)'沒有錯,因爲數據avter評估中的第三個元素是'(quote c)',其中'quote'和'c'只是符號。 – Sylwester

回答

0

我在寫問題的時候得到了解決方案,所以如果其他人搜索這個:檢查函數名稱的函數的顯式名稱是symbol-name

+3

是的,但任何數量的符號都可以有「QUOTE」的名稱。如果我創建一個名爲「FOO」的包,那麼我可以使用符號** foo:quote **。根據你的問題是什麼,檢查'(eq some-symbol'cl:quote)'可能會更好。 –

+1

而你所關聯的問題確實有一個答案;它顯示'(eq(first list)'quote)'。 –

+0

@JoshuaTaylor:你想添加這個作爲答案,還是應該編輯它到這個接受它?我想用'cl:quote'比''quote'好? – Pascal