(define (blad? boom)
(eq? boom 'blad))

(define (appel? boom)
(and (pair? boom) (eq? (car boom) 'appel)))
(define (type appel)
(cdr appel))

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