SICP 問題 2.26(append/cons/listを、リストに適用した場合の違い)

【問題】

x と y をリストとして定義したとしよう。

(define x (list 1 2 3))
(define y (list 4 5 6))

次の式のそれぞれの評価に応じて、解釈系が印字する結果は何か。

(append x y)
(cons x y)
(list x y)

【解答】

append はリストのトップレベルの要素をバラけさせて連結するので「(1 2 3 4 5 6)」、
cons は第2引数に指定したリストの先頭に第1引数のリストを挿入する?ので「((1 2 3) 4 5 6)」、
list は引数を全て要素としてリストを生成するので「((1 2 3) (4 5 6) )」と予想。

では実験。


gosh> (append x y)
(1 2 3 4 5 6)
gosh> (cons x y)
((1 2 3) 4 5 6)
gosh> (list x y)
((1 2 3) (4 5 6) )
gosh>

予想通り。
以上!