(setq alist (cdr alist))))
(car alist))
-(defun rassoc (x alist &key (test #'eql))
+(defun rassoc (x alist &key key (test #'eql) (test #'eql testp)
+ (test-not #'eql test-not-p))
(while alist
- (if (funcall test x (cdar alist))
+ (if (satisfies-test-p x (cdar alist) :key key :test test :testp testp
+ :test-not test-not :test-not-p test-not-p)
(return)
(setq alist (cdr alist))))
(car alist))
(test (equal (rassoc 2 alist) '(1 . 2)))
(test (not (assoc 2 alist)))
(test (not (rassoc 1 alist)))
- (test (equal (assoc 3 alist :test-not #'=) '(1 . 2)))
- (test (equal (assoc 1 alist :key (lambda (x) (/ x 3))) '(3 . 4))))
+ (test (equal (assoc 3 alist :test-not #'=) '(1 . 2)))
+ (test (equal (rassoc 4 alist :test-not #'=) '(1 . 2)))
+ (test (equal (assoc 1 alist :key (lambda (x) (/ x 3))) '(3 . 4)))
+ (test (equal (rassoc 2 alist :key (lambda (x) (/ x 2))) '(3 . 4))))
; MEMBER
(test (equal (member 2 '(1 2 3)) '(2 3)))