143 lines
4.3 KiB
Plaintext
143 lines
4.3 KiB
Plaintext
;; Function To Be Tested: RASSOC
|
|
;;
|
|
;; Source: Guy L Steele's CLTL
|
|
;; Section: 15.6 Association Lists
|
|
;; Page: 281
|
|
;;
|
|
;; Created By: Kelly Roach
|
|
;;
|
|
;; Creation Date: June 27,1986
|
|
;;
|
|
;; Last Update: June 27,1986
|
|
;;
|
|
;; Filed As: {ERIS}<LISPCORE>CML>TEST>15-6-RASSOC.TEST
|
|
;;
|
|
;;
|
|
;; Syntax: (RASSOC ITEM ALIST &KEY TEST TEST-NOT KEY)
|
|
;;
|
|
;; Function Description:
|
|
;; RASSOC is the reverse form of ASSOC; it searches for
|
|
;; a pair whose CDR satisfies the test, rather than the CAR.
|
|
;; If the A-LIST is considered to be a mapping, then RASSOC
|
|
;; treats the A-LIST as representing the inverse mapping.
|
|
;; For example:
|
|
;;
|
|
;; (RASSOC 'A '((A . B) (B . C) (C . A) (Z . A))) => (C . A)
|
|
;;
|
|
;;
|
|
;; 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 a-list. See the discussion
|
|
;; of the function function ASSOC.
|
|
;;
|
|
;;
|
|
;; Argument(s): ITEM - anything
|
|
;; ALIST - an association list
|
|
;; TEST - a function
|
|
;; TEST-NOT - a function
|
|
;; KEY - a function
|
|
;;
|
|
;; Returns: a list
|
|
;;
|
|
|
|
(DO-TEST "RASSOC TEST 1" (EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
1 2)))
|
|
:TEST
|
|
(QUOTE EQUAL))
|
|
(QUOTE ((3 4)
|
|
1 2)))
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
1 2)))
|
|
:TEST-NOT
|
|
(QUOTE EQUAL))
|
|
NIL)
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
1 2)
|
|
((3 4)
|
|
2 1)))
|
|
:TEST-NOT
|
|
(QUOTE EQUAL))
|
|
(QUOTE ((3 4)
|
|
2 1)))
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
2 1)
|
|
((3 4)
|
|
1 2)))
|
|
:TEST-NOT
|
|
(QUOTE EQUAL))
|
|
(QUOTE ((3 4)
|
|
2 1)))
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
1 2)))
|
|
:TEST
|
|
(QUOTE EQL))
|
|
NIL)
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
QUOTE
|
|
(1 2))))
|
|
:TEST
|
|
(QUOTE EQUAL)
|
|
:KEY
|
|
(QUOTE EVAL))
|
|
(QUOTE ((3 4)
|
|
QUOTE (1 2))))
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
QUOTE
|
|
(1 2))))
|
|
:TEST-NOT
|
|
(QUOTE EQUAL)
|
|
:KEY
|
|
(QUOTE EVAL))
|
|
NIL)
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
QUOTE
|
|
(1 2))
|
|
((3 4)
|
|
QUOTE
|
|
(2 1))))
|
|
:TEST-NOT
|
|
(QUOTE EQUAL)
|
|
:KEY
|
|
(QUOTE EVAL))
|
|
(QUOTE ((3 4)
|
|
QUOTE ( 2 1))))
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
QUOTE
|
|
(2 1))
|
|
((3 4)
|
|
QUOTE
|
|
(1 2))))
|
|
:TEST-NOT
|
|
(QUOTE EQUAL)
|
|
:KEY
|
|
(QUOTE EVAL))
|
|
(QUOTE ((3 4)
|
|
QUOTE ( 2 1))))
|
|
(EQUAL (RASSOC (QUOTE (1 2))
|
|
(QUOTE (((3 4)
|
|
QUOTE
|
|
(1 2))))
|
|
:TEST
|
|
(QUOTE EQL)
|
|
:KEY
|
|
(QUOTE EVAL))
|
|
NIL))
|
|
|
|
STOP
|