(define insertR*
(lambda(new old l)
(cond
((null? l) quote())
((atom? (car l))
(cond
((eq? old (car l))(cons old (cons new (insertR* new old (cdr l)))))
(else (cons (car l)(insertR* new old (cdr l))))))
(else (cons (insertR* new old (car l))(insertR* new old (cdr l)))))))
insertR*
gosh>
gosh> (insertR* 'roast 'chuck '((how much (wood)) could ((a (wood) chuck))(((chuck)))(if (a)((wood chuck))) could chuck wood))
((how much (wood)) could ((a (wood) chuck roast)) (((chuck roast))) (if (a) ((wood chuck roast))) could chuck roast wood)
(define subst*
(lambda(new old l)
(cond
((null? l) quote())
((atom? (car l))
(cond
((eq? old (car l))(cons new (subst* new old (cdr l))))
(else (cons (car l)(subst* new old (cdr l))))))
(else (cons (subst* new old (car l))(subst* new old (cdr l)))))))
subst*
gosh> (subst* 'orange 'banana '((banana)(split((((banana ice))) (cream (banana)) sherbet))(banana)(bread)(banana brandy)))
((orange) (split ((((orange ice))) (cream (orange)) sherbet)) (orange) (bread) (orange brandy))
(define insertL*
(lambda(new old l)
(cond
((null? l) quote())
((atom? (car l))
(cond
((eq? old (car l))(cons new (cons old (insertL* new old (cdr l)))))
(else (cons (car l)(insertL* new old (cdr l))))))
(else (cons (insertL* new old (car l))(insertL* new old (cdr l)))))))
insertL*
gosh> (insertL* 'pecker 'chuck '((how much (wood)) could ((a (wood) chuck))(((chuck))) (if (a) ((wood chuck))) could chuck wood))
((how much (wood)) could ((a (wood) pecker chuck)) (((pecker chuck))) (if (a) ((wood pecker chuck))) could pecker chuck wood)
gosh>