; - Program 5.15, pg. 153 - (define the-zero-poly '((0 0))) (define degree (lambda (poly) (caar poly))) (define leading-coef (lambda (poly) (cadar poly))) (define rest-of-poly (lambda (poly) (if (null? (cdr poly)) the-zero-poly (cdr poly)))) (define poly-cons (lambda (deg coef poly) (let ((deg-p (degree poly))) (cond ((and (zero? deg) (equal? poly the-zero-poly)) (list (list 0 coef))) ((< deg-p deg) (if (zero? coef) poly (cons (list deg coef) poly))) (else (error "poly-cons: degree too high in" poly)))))) ; - End Program -