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)
うまくいった。