我对set-car!
两个具有相同结构但构造不同的列表的应用结果感到困惑。
所以这是两个列表m
和的代码示例n
:
(define m
(cons
(cons 'a '())
(cons
(cons 'a '())
'())))
(display m)(newline) ; => ((a) (a))
(set-car! (cadr m) 'b)
(display m)(newline) ; => ((a) (b))
(newline)
(define n (list '(x) '(x)))
(display n)(newline) ; => ((x) (x))
(set-car! (cadr n) 'y)
(display n)(newline) ; => ((y) (y))
根据 do display
,两个列表具有相同的结构,但为什么对它们应用相同的过程会导致不同的行为?这与它们的构造方式有关吗?