この関数 xxx はどんな関数か、という質問。
(use mymodule) (define xxx (lambda (s1 s2) (cond ((null? s1) (quote ())) ((member? (car s1) s2) (xxx (cdr s1) s2)) (else (cons (car s1) (xxx (cdr s1) s2)))))) (print (xxx '(stewed tomatoes and macaroni casserole) '(macaroni and cheese)))
^o^ > gosh -I. xxx.scm (stewed tomatoes casserole)
答は s1 に含まれていて s2 に含まれていないすべてのアトムからなるセットを返す関数。(car s1)
が s2 のメンバーなら cons せずに、メンバーでないなら cons して再帰している。終了条件は (null? s1)
で値は () だ。まあ、見ればわかるよね。