2009-12-07 177 views
1

我正在嘗試學習lisp,並且當我讓我的第一步被卡住了。 我怎樣才能得到下表C元件形式:(a b (c.d))從列表中返回一個元素

我已經試過:(caar (last '(a b (c.d))))但它返回c.d,而不是隻有c
如果有C的空間然而這工作。 ,即即:即:(caar (last '(a b (c . d))))

我試圖解決的問題有沒有空格指定列表。可以這樣做嗎?或者這是練習中的錯字?

謝謝。

LE:Uisng GNU CLISP http://clisp.cons.org/ 是否有可能,這個問題它是由執行引起的?

+3

聽起來像一個錯字。你在用什麼Lisp? – CBFraser 2009-12-07 15:30:26

+0

這個問題與您已經發布的其他問題有何不同? – 2009-12-07 16:04:40

+0

我真的很陌生,第一課,我只是想明白,所以這個問題似乎不同於我: - ?對不起,如果它是相似的 – daniels 2009-12-07 17:44:29

回答

4

你的代碼是正確的,這是一個錯字(或者可能是一個非常糟糕的字體?)在練習中。在Lisp中(Common Lisp和Scheme是我剛纔測試的兩個,我不知道Clojure),[幾乎]符號之間的唯一區別是空格和括號。即使 。用作cons的文字語法,如果您輸入'(c.d),則在列表中獲得一個符號,而在cons單元中不會獲得兩個符號。

例如,

'c.d  ; is one symbol 
'(c . d) ; is two symbols in a single cons cell 
'((c)d) ; is two symbols, the first in a nested list 

編輯:由於您使用的Common Lisp,這裏是the list of relevant charactersthe reader algorithm。總而言之,()終止字符,而.不是。 CLisp根據Common Lisp規範執行。

相關問題