関数 union は、2つのセット s1 と s2 の和集合を返す関数。(car s1)
が s2 のメンバーなら cons せずに(なぜなら s2 に含まれているから)、メンバーでないなら cons して再帰すればいい。
(use mymodule) (define union (lambda (s1 s2) (cond ((null? s1) s2) ((member? (car s1) s2) (union (cdr s1) s2)) (else (cons (car s1) (union (cdr s1) s2)))))) (print (union '(stewed tomatoes and macaroni casserole) '(macaroni and cheese)))
^o^ > gosh -I. union.scm (stewed tomatoes casserole macaroni and cheese)