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 | an object. |
alist | an association list. |
predicate | a designator for a function of one argument that returns a generalized boolean. |
test | a designator for a function of two arguments that returns a generalized boolean. |
test-not | a designator for a function of two arguments that returns a generalized boolean. |
key | a designator for a function of one argument, or nil. |
entry | a cons that is an element of the alist, or nil. |
rassoc, rassoc-if, and rassoc-if-not return the first cons whose cdr satisfies the test. If no such cons is found, nil is returned.
(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)
The :test-not
parameter is deprecated.
The function rassoc-if-not is deprecated.
It is possible to rplaca the result of rassoc, provided that it is not nil, in order to "update" alist.
The expressions
(rassoc item list :test fn)
and
(find item list :test fn :key #'cdr)
are equivalent in meaning, except when the item
is nil
and nil appears in place of a pair in the alist.
See the function assoc.