npt-japanese

% Function RASSOC, RASSOC-IF, RASSOC-IF-NOT

UP


Function RASSOC, RASSOC-IF, RASSOC-IF-NOT

Function RASSOC, RASSOC-IF, RASSOC-IF-NOT

構文

rassoc item alist &key key test test-not => entry
rassoc-if predicate alist &key key => entry
rassoc-if-not predicate alist &key key => entry

引数と戻り値

item - オブジェクト
alist - 連想リスト
predicate - 1つの引数を取りgeneralized-booleanを返却する関数の指定子
test - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
test-not - 2つの引数を取りgeneralized-booleanを返却する関数の指定子
key - 1つの引数を取る関数の指定子、またはnil
entry - alistの要素であるコンスか、nil

定義

rassoc, rassoc-if, rassoc-if-notは、 alistcdrtestを満たすようなコンスがあれば返却し、 そのようなコンスが見つからないときはnilを返却します。

もしalistのペアが現れる場所にnilあったとは無視します。

例文

(setq alist '((1 . "one") (2 . "two") (3 . 3))) 
=>  ((1 . "one") (2 . "two") (3 . 3))
(rassoc 3 alist) =>  (3 . 3)
(rassoc "two" alist) =>  NIL
(rassoc "two" alist :test 'equal) =>  (2 . "two")
(rassoc 1 alist :key #'(lambda (x) (if (numberp x) (/ x 3)))) =>  (3 . 3)
(rassoc 'a '((a . b) (b . c) (c . a) (z . a))) =>  (C . A)
(rassoc-if #'stringp alist) =>  (1 . "one")
(rassoc-if-not #'vectorp alist) =>  (3 . 3)

副作用

なし。

影響

なし。

例外

なし。

参考

assoc, 3.6. 横断の規則と副作用

備考

:test-notは、非推奨です。

関数rassoc-if-notは、非推奨です。

alistを更新するために、 rassocの結果がnilでなければ、 rplacaを使うことができます。

次の2つの式

(rassoc item list :test fn)
(find item list :test fn :key #'cdr)

これらは、ひとつの例外を除いては同じ意味です。 例外は、itemnilであり、 かつalistのペアの場所にnilが現れるときです。 関数assocをご確認下さい。


TOP, Github