これらの関数は、コンスセルの木全体で要素を置き換える。(リストの
トップレベルの要素だけに作用するsubstitute関数に関しては、
See 列関数.)
この関数は、コンスセルの木であるtreeの中の、oldの出現を
newで置き換える。置き換えられた木を戻す。木は、置き換えが
起こらなかった部分は引数treeと記憶域を共有するかもしれない点は
除いて、コピーである。オリジナルのtreeは修正されない。この
関数は、構成要素のコンスセルのcarとcdr両方に再帰し、
oldに対して比較する。old自身がコンスセルの場合、木の中の
マッチするセルは、そのセル中は再帰的に置き換えられることなしに、
通常通り置き換えられる。oldとの比較は、指定されたテスト(既定では
eql)に従ってなされる。:key関数は、木の要素に
適用されるが、oldには適用されない。
この関数はsubstと似ているが、コピーするのではなく(setcar
またはsetcdrで)破壊的に修正することで動作する点が異なる。
subst-ifやsubst-if-not、nsubst-if、
nsubst-if-not関数は同様に定義される。
この関数はsubstと似ているが、oldとnewの対の
連想リストを取る点が異なる。木の各要素は、(:key関数がある
場合はそれを適用後)alistのcarと比較される; マッチする
場合、対応するcdrで置き換えられる。
これはsublisの破壊版である。