% Function ADJOIN
Function ADJOIN
adjoin
item list &key key test test-not => new-list
item - オブジェクト
list - 通常のリスト
test - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
test-not - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
key - 1つの引数を取りgeneralized-booleanを返却する関数の指定子、
またはnil
new-list - リスト
itemと同じものが、listの既存の要素にあるかどうかをテストします。
もしitemが既存の要素に存在しないときは、
adjoin
は、cons
によってlistに追加したあと、
その結果を返却します。
存在するときは、何も加えないまま元のlistを返却します。
test, test-notとkeyは、listの要素とitemが 同じかどうかをどのように決めるかに影響します。 詳しい説明は17.2.1. 2つの引数のテストをご確認ください。
(setq slist '()) => NIL
(adjoin 'a slist) => (A)
slist => NIL
(setq slist (adjoin '(test-item 1) slist)) => ((TEST-ITEM 1))
(adjoin '(test-item 1) slist) => ((TEST-ITEM 1) (TEST-ITEM 1))
(adjoin '(test-item 1) slist :test 'equal) => ((TEST-ITEM 1))
(adjoin '(new-test-item 1) slist :key #'cadr) => ((TEST-ITEM 1))
(adjoin '(new-test-item 1) slist) => ((NEW-TEST-ITEM 1) (TEST-ITEM 1))
なし。
listが通常のリストではないとき、
型type-error
のエラーを通知する準備をしなければなりません。
pushnew
,
3.6. 横断の規則と副作用
:test-not
パラメーターは非推奨です。
(adjoin item list :key fn)
== (if (member (fn item) list :key fn) list (cons item list))