プチ シェ スキーム (スレッド) で。myq と myqq という名前の 2 つのリストを定義しました。
(define make-queue
(lambda ()
(let ((end (cons 'ignored '())))
(cons end end))))
(define myqq (make-queue))
(define myq '((ignored) ignored))
;this shows myq and myqq are equal
(display (equal? myqq myq))
(newline)
;test myqq
(display myqq)
(newline)
(set-car! (cdr myqq) 'b)
(display myqq)
(newline)
;test myq
(display myq)
(newline)
(set-car! (cdr myq) 'b)
(display myq)
(newline)
これは結果です:
#t
((ignored) ignored)
((b) b)
((ignored) ignored)
((ignored) b)
私の質問は:
(display (equal? myqq myq))
myq と myqq が等しいことを示します。同じコマンドを実行する理由:
(set-car! (cdr myqq) 'b)
(set-car! (cdr myq) 'b)
違う結果につながる?さらに、なぜ(set-car! (cdr myqq) 'b)
結果が になるのかわかりません。myqq の車を変更することはないので、((b) b)
結果は になるはずです。((ignored) b)