SICP問題3.20
教科書で定義されている可変データによる対の手続
(define (cons x y) (define (set-x! v) (set! x v)) (define (set-y! v) (set! y v)) (define (dispatch m) (cond ((eq? m 'car) x) ((eq? m 'cdr) y) ((eq? m 'set-car!) set-x!) ((eq? m 'set-cdr!) set-y!) (else (error "Undefined operation -- CONS" m)))) dispatch) (define (car z) (z 'car)) (define (cdr z) (z 'cdr)) (define (set-car! z new-value) ((z 'set-car!) new-value) z) (define (set-cdr! z new-value) ((z 'set-cdr!) new-value) z)
以下の一連の式の評価を示す環境の図を描け
(define x (cons 1 2)) (define z (cons x x)) (set-car! (cdr z) 17) (car x)
対の手続きを定義した後の環境
(define x (cons 1 2))
(define z (cons x x))
(set-car! (cdr z) 17)
(car x)