Welcome to MzScheme version 360, Copyright (c) 2004-2006 PLT Scheme Inc. > (load "ch2support.scm") > (put 1 1 2) ok > (get 1 1) 2 > (define (real-part z) (car z)) > (put 'real-part 'rect real-part) ok > (define (contents datum) (if (pair? datum) (cdr datum) (error "Bad tagged datum -- CONTENTS" datum))) > (define rn '(rect . (1 . 2))) > (contents rn) (1 . 2) > ((get 'real-part 'rect) (contents rn)) 1 > (put 'real-part 'rect real-part) ok > (get 'real-part 'rect) # > (define (real-part z) (car z)) (define (imag-part z) (cdr z)) (define (make-from-real-imag x y) (cons x y)) > > > (define (attach-tag type-tag contents) (cons type-tag contents)) (define (type-tag datum) (if (pair? datum) (car datum) (error "Bad tagged datum -- TYPE-TAG" datum))) > > (define rn '(rect . (1 . 2))) > (define rn (attach-tag 'rect (make-from-real-imag 1 2))) > rn (rect 1 . 2) > (define rn '(rect . (1 . 2))) > rn (rect 1 . 2) > ((get 'real-part (type-tag rn)) (contents rn)) 1 > (define (real-part z) (car z)) > (put 2 3 4) ok > done > (get 'real-part 'rectangular) #f > (get 'real-part '(rectangular)) # > (get 6 7) #f >