multirember はアトム a とラット lat を引数に取り、lat の中のすべての a を取り除く。
(define multirember
(lambda (a lat)
(cond
((null? lat) (quote ()))
((eq? (car lat) a) (multirember a (cdr lat)))
(else (cons (car lat) (multirember a (cdr lat)))))))
ポイントは、5行目の (eq? (car lat) a) のときにも再帰しているところだな。
実行例:
gosh> (multirember 'cup '(coffee cup tea cup and hick cup)) (coffee tea and hick)