multirember

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)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください