(define (make-polynome coordinatenlijst)
  (list->vector coordinatenlijst))
(define (order pol)
  (- (vector-length pol) 1))
(define (coefficient nummer pol)
  ;het nummer van de coefficient komt overeen met het nummer van de macht
  ;voor de variabele...
  (let ((o (order pol)))
    (if (or (< nummer 0) (> nummer o))
      0 ;hier hoeft geen error teruggegeven te worden
      (vector-ref pol (- o nummer)))))
;om de optelling, aftrekking en dergelijke te definieren voel ik me
;geroepen een procedure te schrijven die een nieuwe polynoom ontwerpt door
;telkens de nieuwe co‰fficient op te vragen...
;de combiner neemt als parameter het coefficientnummer
;het resultaat van combiner moet de nieuwe coefficient zijn...
(define (aux combiner to)
  (define (iter coefnum acc)
    (if (> coefnum to)
        acc
        (iter (1+ coefnum) (cons (combiner coefnum ) acc))))
  (make-polynome (iter 0 '())))
;dan nu een nieuwe abstractie die twee polynomen combineert...
;f is een functie die twee coefficienten verwerkt...
(define (combine f pol1 pol2)
  (define (combiner coefnum)
    (f (coefficient coefnum pol1) (coefficient coefnum pol2)))
  (aux combiner (max (order pol1) (order pol2))))
(define (+pol pol1 pol2)
  (combine + pol1 pol2))
(define (-pol pol1 pol2)
  (combine - pol1 pol2))
(define (pol scalair pol)
  (define (combiner coefnum)
    ( scalair (coefficient coefnum pol)))
  (aux combiner (order pol)))
(define pol1 (make-polynome '(3 5 -6)))
(define pol2 (make-polynome '(9 4 -7 0)))