Next: , Previous: , Up: リスト   [Contents][Index]


10.2 式の置き換え

これらの関数は、コンスセルの木全体で要素を置き換える。(リストの トップレベルの要素だけに作用するsubstitute関数に関しては、 See 列関数.)

Function: subst new old tree &key :test :test-not :key

この関数は、コンスセルの木であるtreeの中の、oldの出現を newで置き換える。置き換えられた木を戻す。木は、置き換えが 起こらなかった部分は引数treeと記憶域を共有するかもしれない点は 除いて、コピーである。オリジナルのtreeは修正されない。この 関数は、構成要素のコンスセルのcarcdr両方に再帰し、 oldに対して比較する。old自身がコンスセルの場合、木の中の マッチするセルは、そのセル中は再帰的に置き換えられることなしに、 通常通り置き換えられる。oldとの比較は、指定されたテスト(既定では eql)に従ってなされる。:key関数は、木の要素に 適用されるが、oldには適用されない。

Function: nsubst new old tree &key :test :test-not :key

この関数はsubstと似ているが、コピーするのではなく(setcar またはsetcdrで)破壊的に修正することで動作する点が異なる。

subst-ifsubst-if-notnsubst-ifnsubst-if-not関数は同様に定義される。

Function: sublis alist tree &key :test :test-not :key

この関数はsubstと似ているが、oldnewの対の 連想リストを取る点が異なる。木の各要素は、(:key関数がある 場合はそれを適用後)alistcarと比較される; マッチする 場合、対応するcdrで置き換えられる。

Function: nsublis alist tree &key :test :test-not :key

これはsublisの破壊版である。