| a* | sets |
|---|
(intersection '(v w x) '(w x y) '(x y z)) => (x)
(load "fold-left.scm")
(define (intersection . a*)
(letrec
((intersection2
(lambda (a b)
(cond
((null? a) '())
((member (car a) b)
(cons (car a) (intersection2 (cdr a) b)))
(else (intersection2 (cdr a) b))))))
(cond ((null? a*) '())
(else (fold-left intersection2 (car a*) (cdr a*))))))