(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)))