CLHS: Function RASSOC, RASSOC-IF, RASSOC-IF-NOT

#

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

Syntax:

rassoc item alist `&key` key test test-not => entry

rassoc-if predicate alist `&key` key => entry

rassoc-if-not predicate alist `&key` key => entry

Arguments and Values:

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.

Description:

rassoc, rassoc-if, and rassoc-if-not return the first cons whose cdr satisfies the test. If no such cons is found, nil s returned.

If nil appears in alist in place of a pair, it is ignored.

Examples:

     (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)

Side Effects: None.

Affected By: None.

Exceptional Situations: None.

See Also:

assoc, Section 3.6 (Traversal Rules and Side Effects)

Notes:

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 nd nil appears in place of a pair in the alist. See the function assoc.

The following X3J13 cleanup issues, not part of the specification, apply to this section:

- TEST-NOT-IF-NOT:FLUSH-ALL
- MAPPING-DESTRUCTIVE-INTERACTION:EXPLICITLY-VAGUE
- ASSOC-RASSOC-IF-KEY
- ASSOC-RASSOC-IF-KEY:YES

Copyright 1996-2005, LispWorks Ltd. All rights reserved.