Функції відбору
(SETQ TEST 'EQL) ) )
((FUNCALL TEST KEY (CAAR ALIST))
(CAR ALIST) )
(ASSOC KEY (CDR ALIST) TEST) )
$ (SETQ CAPITALS ‘((USA . WASHINGTON) (FRANCE . PARIS) (JAPAN . TOKYO)))
$ (ASSOC 'FRANCE CAPITALS)
(FRANCE . PARIS)
$ (ASSOC 'AUSTRALIA CAPITALS)
NIL
10. (RASSOC key alist test). Виконує лінійний пошук в асоциативному списку пари, для якої при порівнянні її CDR- елемента з ключем key за тестом test ознака не дорівнює NIL. Якщо тест-аргумент дорівнює NIL або не задан, RASSOC використовує EQL-тест.
(RASSOC-IF test alist). Шукає в асоциативному списку пару, для якої ознака перевірки її CDR - елемента за тестом не дорівнює NIL.
Для обох функцій, якщо пара, що задовольняє тесту, знайдена, ця пара выдається, інакше повертається NIL.
RASSOC - це скорочення від Reverse ASSOCiate.
(DEFUN RASSOC (KEY ALIST TEST)
((ATOM ALIST) NIL)
((ATOM (CAR ALIST))
(RASSOC KEY (CDR ALIST) TEST) )
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST KEY (CDAR ALIST))
(CAR ALIST) )
(RASSOC KEY (CDR ALIST) YEST) )
$ (RASSOC 'PARIS CAPITALS)
(FRANCE . PARIS)
$ (RASSOC 'CANBERRA CAPITALS)