multisubst

3章の最後は、multisubst だ。(multisubst new old lat) は lat の中のすべての old を new に置き換える。

(define multisubst
  (lambda (new old lat)
    (cond
      ((null? lat) (quote ()))
      ((eq? (car lat) old) (cons new (multisubst new old (cdr lat))))
      (else (cons (car lat) (multisubst new old (cdr lat)))))))

実行例:

gosh> (multisubst 'A 'a '(a b c a b c))
(A b c A b c)

うまくいった。

コメントを残す

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.