2012-02-28 88 views
1

我有下面的代碼和它作爲評論評價:利弊,列表和mpair球拍

(require scheme/mpair) 

(list)     ;; '() 
(mlist)     ;; '() 

(cons 'un (list))  ;; '(un) 
(list 'un (list))  ;; '(un()) 

(mcons 'un (mlist))  ;; (mcons 'un '()) 
(mlist 'un (mlist))  ;; (mcons 'un (mcons '() '())) 

我的問題:

  1. 爲什麼,而不是沒有第三個表達式返回'()'(un .())

  2. 爲什麼第五個表達式和第六個表達式不會返回相同的東西?

回答

5

作爲一般示例,(list x y z)(cons x (cons y (cons z empty)))的縮寫。而(list)是一個空列表,即empty。所以(list 'un (list))只是(cons 'un (cons empty empty))的縮寫 - 即,一個包含兩個元素的列表:符號'un和一個空列表。 mlist同樣是mcons的序列在最後的empty的縮寫。