1
0
mirror of synced 2026-01-29 05:21:35 +00:00
Files
Interlisp.medley/internal/test/LANGUAGE/AUTO/15-6-RASSOC.TEST

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