Previous: , Up: Lists   [Contents][Index]

10.4 Association Lists

An association list is a list representing a mapping from one set of values to another; any list whose elements are cons cells is an association list.

Function: assoc* item a-list &key :test :test-not :key

This function searches the association list a-list for an element whose car matches (in the sense of :test, :test-not, and :key, or by comparison with eql) a given item. It returns the matching element, if any, otherwise nil. It ignores elements of a-list which are not cons cells. (This corresponds to the behavior of assq and assoc in Emacs Lisp; Common Lisp’s assoc ignores nils but considers any other non-cons elements of a-list to be an error.)

Function: rassoc* item a-list &key :test :test-not :key

This function searches for an element whose cdr matches item. If a-list represents a mapping, this applies the inverse of the mapping to item.

Function: rassoc item a-list

This function searches like rassoc* with a :test argument of equal. It is analogous to Emacs Lisp’s standard assoc function, which derives from the MacLisp rather than the Common Lisp tradition.

The assoc-if, assoc-if-not, rassoc-if, and rassoc-if-not functions are defined similarly.

Two simple functions for constructing association lists are:

Function: acons key value alist

This is equivalent to (cons (cons key value) alist).

Function: pairlis keys values &optional alist

This is equivalent to (nconc (mapcar* 'cons keys values) alist).