4

set-car!同じ構造を持つが異なる方法で作成された 2 つのリストに を適用した結果について、私は混乱しています。

2 つのリスト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、両方のリストは同じ構造を持っていますが、同じ手順をそれらに適用すると異なる動作になるのはなぜですか? それはそれらが構築された方法と関係がありますか?

4

1 に答える 1