MzScheme4.1.2にて

set-car!を定義してみたが、うまくいかない。
(define (set-car! z x)
(set! z (cons x (cdr z))))

(set-car! z x)
としてもzの中身が変わらない。

(set! z (cons x (cdr z)))
ならうまくいくから、関数内での変更は戻されるってことなのかな。

SICPでのLISPと言語の仕様が違う気がするんだが...