Welcome to MzScheme version 360, Copyright (c) 2004-2006 PLT Scheme Inc. > > # > (define a (make-decr 100)) > a # > (a 10) 90 > (a 20) 80 > (a 100) 0 > (a 100) 0 > > (define b (make-withdraw 100)) > b # > (b 10) 90 > (b 10) 80 > (b 10) 70 > (b 10) 60 > (b 10) 50 > (set! w 2) set!: cannot set undefined identifier: w === context === repl-loop > (set! a 2) > (set! spam 2) set!: cannot set undefined identifier: spam === context === repl-loop > (define spam 1) > (set! spam 2) > spam 2 > (define a '(1 2 3 4)) > a (1 2 3 4) > (set! a (cdr a)) > a (2 3 4) > (set! b (cdr a)) > b (3 4) > (define b (make-withdraw 100)) > (define c (make-withdraw 100)) > (b 10) 90 > (c 10) 90 > a (2 3 4) > b # > (set! b (cdr a)) > a (2 3 4) > b (3 4) > (eq? b (cdr a)) #t > (set! (cdr a) 6) stdin::559: set!: not an identifier at: (cdr a) in: (set! (cdr a) 6) === context === repl-loop > (define a 9) > a 9 > b (3 4) > (set-car! b 7) > b (7 4) > a 9 > (define a '(1 2 3 4)) > (define b (cdr a)) > a (1 2 3 4) > b (2 3 4) > (set-car! b 8) > b (8 3 4) > a (1 8 3 4) > (set-cdr! a 6) > a (1 . 6) > b (8 3 4) >