(define (make-rectangular x y) (attach-type 'rectangular (cons x y))) (define (make-polar x y) (attach-type 'polar (cons x y))) (define (rectangular? z) (eq? (type z) 'rectangular)) (define (polar? z) (eq? (type z) 'polar))実部,虚部,絶対値,偏角を求める手続きをそれぞれの データタイプに対して用意すると,
(define (square x) (* x x)) (define (real-part-rectangular z) (car z)) (define (imag-part-rectangular z) (cdr z)) (define (magnitude-rectangular z) (sqrt (+ (square (car z)) (square (cdr z))))) (define (angle-rectangular z) (atan (cdr z) (car z))) (define (real-part-polar z) (* (car z) (cons (cdr z)))) (define (imag-part-polar z) (* (car z) (sin (cdr z)))) (define (magnitude-polar z) (car z)) (define (angle-polar z) (cdr z))となります.