multirember

2014年1月10日
1 分

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)