Skip to content

2.87

; Install `=zero?` for polynomials in the generic arithmetic package. This will allow
; `adjoin-term` to work for polynomials with coefficients that are themselves 
; polynomials.

(load "packages/general.scm")
(load "packages/polynomial.scm")
(load "arithmetic-package.scm")

; Answer

; Inside the `polynomial` package, write the following snippet
; (already included inside `packages/polynomial.scm`)

(define (poly-zero? term-list)
    (if (empty-termlist? term-list)
        #t
        (and (=zero? (first-term term-list))
             (poly-zero? (rest-term term-list)))))

(put '=zero? '(polynomial) (lambda (p) (poly-zero? p)))

; Testing
(install-polynomial-package)

(define p1 
    (make-polynomial 
        'x
        (list (make-term 2 (make-scheme-number 0))
              (make-term 1 (make-scheme-number 0))
              (make-term 0 (make-scheme-number 0))))) ; 0x^2 + 1x + 0

(=zero? p1) ;Value: #t

(define p2
    (make-polynomial
        'x
        (list (make-term 2 (make-scheme-number 0))
              (make-term 1 (make-scheme-number 2))
              (make-term 0 (make-scheme-number 0)))))
(=zero? p2) ;Value: #f