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