;; boxed-value fns (define (make-box value) (cons 'box value)) (define (box? obj) (eq? (car obj) 'box)) (define (box-get box) (cdr box)) (define (box-set! box value) (set-cdr! box value)) ;; some fn that modifies its parameter (define (foo box) (box-set! box 'modified)) ;; test (let1 box (make-box 42) (print (box-get box)) (foo box) (print (box-get box))) ;; todo can one simulate dynamic scope with boxes?