在嬌小的Chez計劃(線程)。我定義了兩個名爲myq和myqq的列表。Petite Chez Scheme(線程)這兩個列表之間有什麼不同?
(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)
結果在((b) b)
。我認爲這應該導致((ignored) b)
,因爲我們從來沒有改變myqq的車!
我很生氣....任何幫助將不勝感激。提前致謝。
不完全重複,但請注意,修改文字(例如引號)數據通常不是一個好主意:[意外的數據持久性](http://stackoverflow.com/q/18790192/1281433) –