2.89
; Define procedures that implement the `term-list` representation described above as
; appropriate for dense polynomials.
; Representation of 2x^3 + 5x + 7 will be,
; (2 0 5 7)
; We essentially need to change `adjoin-term` to store internally
; in the above representation while preserving the same data structure as before
(define (adjoin-term term term-list)
(cond ((=zero? term) term-list)
((= (order term) (length term-list))
(cons (coeff term) term-list))
(else (adjoin-term term
(cons 0 term-list)))))
(define (first-term term-list)
(make-term
(- (length term-list) 1)
(car term-list)))
; Attaching 4x^4 to (2x^3 + 5x + 7) will be,
; (adjoin-term (4 3) (2 0 5 7))
; => (3 2 0 5 7)
; Attaching 3x^5 to (2x^3 + 5x + 7) will be,
; (adjoin-term (5 3) (2 0 5 7))
; => (adjoin-term (5 3) (0 2 0 5 7))
; => (3 0 2 0 5 7)