(load-quietly-from-lib "ch3.ss") ; for list-of-zeros ; - Program 5.14, pg. 151 - (define the-zero-poly '(0)) (define degree (lambda (poly) (sub1 (length poly)))) (define leading-coef (lambda (poly) (car poly))) (define rest-of-poly (lambda (poly) (cond ((zero? (degree poly)) the-zero-poly) ((zero? (leading-coef (cdr poly))) (rest-of-poly (cdr poly))) (else (cdr poly))))) (define poly-cons (lambda (deg coef poly) (let ((deg-p (degree poly))) (cond ((and (zero? deg) (equal? poly the-zero-poly)) (list coef)) ((< deg-p deg) (if (zero? coef) poly (cons coef (append (list-of-zeros (sub1 (- deg deg-p))) poly)))) (else (error "poly-cons: Degree too high in" poly)))))) ; - End Program -