Function MEMBER, MEMBER-IF, MEMBER-IF-NOT

UP


Function MEMBER, MEMBER-IF, MEMBER-IF-NOT

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が発見された場所のリストの部分を変更することができます。 (membernilを返却していないという チェックがされていると仮定しています。)


TOP, Github