(define (unie v1 v2)
  (cond ((null? v1) v2)
        ((member (car v1) v2) (unie (cdr v1) v2))
        (cons (car v1) (unie (cdr v1) v2))))

(define (bewerk-boom boom doe-blad doe-appel combiner init)
  (cond ((null? boom) init)
        ((blad? boom) (doe-blad boom))
        ((appel? boom) (doe-appel (type boom)))
        (else (combiner (bewerk-boom (car boom)
                                     doe-blad
                                     doe-appel
                                     combiner
                                     init)
                        (bewerk-boom (cdr boom)
                                     doe-blad
                                     doe-appel
                                     combiner
                                     init)))))

(define (apple-types-dmv-bewerk boom)
  (bewerk-boom boom (lambda (blad) '()) list unie '()))
;; dit geeft de lege lijst terug wanneer opgeroepen met de boom uit de opgave. geen idee waaom