Comme d'autres l'ont dit, tout ce que vous devez faire est de créer des fonctions distinctes pour calculer l'intersection, l'union et la soustraction des deux ensembles, et les appeler à partir checkresult:
(define (checkresult a b)
(list (subtract a b)
(subtract b a)
(union a b)
(intersect a b)))
Voici quelques union exemple , intersection et fonctions de soustraction:
(define (element? x lst)
(cond ((null? lst) #f)
((eq? x (car lst)) #t)
(#t (element? x (cdr lst)))))
(define (union a b)
(cond ((null? b) a)
((element? (car b) a)
(union a (cdr b)))
(#t (union (cons (car b) a) (cdr b)))))
(define (intersect a b)
(if (null? a) '()
(let ((included (element? (car a) b)))
(if (null? (cdr a))
(if included a '())
(if included
(cons (car a) (intersect (cdr a) b))
(intersect (cdr a) b))))))
(define (subtract a b)
(cond ((null? a) '())
((element? (car a) b)
(subtract (cdr a) b))
(#t (cons (car a) (subtract (cdr a) b)))))
Note: puisque ceux-ci sont des ensembles et l'ordre n'a pas d'importance, les résultats ne sont pas triés. En outre, les fonctions supposent que les entrées sont des ensembles, et donc ne font aucun contrôle en double au-delà de ce qui est requis pour l'union.
Travail à domicile? Vous devriez ajouter un tag «devoirs» si c'est le cas. –