Function MEMBER
, MEMBER-IF
, MEMBER-IF-NOT
member
item list &key key test test-not => tail
member-if
predicate list &key key => tail
member-if-not
predicate list &key key => tail
item - オブジェクト
list - 通常のリスト
predicate - 1つの引数を取りgeneralized-booleanを返却する関数の指定子
test - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
test-not - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
key - 1つの引数を取る関数の指定子、またはnil
tail - リスト
member
, member-if
, member-if-not
は それぞれlistからitemを探すか、 あるいはtestをみなすトップレベルの要素を探します。 predicate関数の引数は、listの要素です。
もしある要素がtestを満たすときは、 その要素で始まるリストの末尾を返します。 それ以外はnil
を返却します。
listはトップレベルのみで検索されます。
member 2 '(1 2 3)) => (2 3)
(member 2 '((1 . 2) (3 . 4)) :test-not #'= :key #'cdr) => ((3 . 4))
(member 'e '(a b c d)) => NIL
(member-if #'listp '(a b nil c d)) => (NIL C D)
(member-if #'numberp '(a #\Space 5/3 foo)) => (5/3 FOO)
(member-if-not #'zerop
(3 6 9 11 . 12)
'(:key #'(lambda (x) (mod x 3))) => (11 . 12)
なし。
なし。
listが通常のリストではないとき、 型type-error
のエラーを通知する準備をする必要があります。
find
, position
, 3.6. 横断の規則と副作用
:test-not
パラメーターは非推奨です。
関数member-if-not
は非推奨です。
下記の例を考えます。
member 'a '(g (a y) c a d e a f)) => (A D E A F) (
member
によって返却された値は、a
から始まるリストの位置と同一です。 したがって、member
の結果をrplaca
することで、 a
が発見された場所のリストの部分を変更することができます。 (member
がnil
を返却していないという チェックがされていると仮定しています。)