2013-01-10 83 views
2

我學習計劃,我剛纔遇到我的第一個問題:方案利弊和長度

(define x (cons (list 1 2) (list 3 4))) 
(length x) 
3 

爲什麼輸出是3而不是2?我已經顯示x

((1 2) 3 4) 

爲什麼會這樣而不是((1 2) . (3 4))

謝謝。

回答

2

也許更容易看到這種方式。

您有:

(cons (list 1 2) (list 3 4)) 

如果

(define one-two (list 1 2)) 

你有

(cons one-two (list 3 4)) 

這相當於

(cons one-two (cons 3 (cons 4 '()))) 

(list one-two 3 4) 

((1 2) 3 4) 
+0

我沒有得到的是從'(cons 3(cons 3(cons 4'())))'到'(list a 3 4)''。 不應該以''()'結尾作爲列表嗎? – user1544128

+0

不,列表是一個cons cell,它的cdr是一個列表,''()'是空列表。 –

+0

參見http://en.wikibooks.org/wiki/Scheme_Programming/List_Operations –

0

List是方案的基本數據結構。缺陷用於製造一對物體。列表是利弊鏈。 例如。列表(1 2 3 4)與(cons 1(cons 2(cons 3(cons 4'()))))相同。 看到塊指針表示清楚