(consp (cons 'a 'b))
(consp '(1 . 2))
(consp (list nil))
(not (consp 'a))
(not (consp nil))
(not (consp 1))
(not (consp #\a))
(let ((a (cons 1 2)))
(and (eql (car a) 1)
(eql (cdr a) 2)))
(equal (cons 1 nil) '(1))
(equal (cons nil nil) '(nil))
(equal (cons 'a (cons 'b (cons 'c '()))) '(a b c))
(atom 'a)
(atom nil)
(atom 1)
(atom #\a)
(not (atom (cons 1 2)))
(not (atom '(a . b)))
(not (atom (list nil)))
(listp nil)
(listp '(a b c))
(listp '(a . b))
(listp (cons 'a 'b))
(listp '#1=(1 2 . #1#))
(not (listp 1))
(not (listp 't))
(null '())
(null 'nil)
(null nil)
(not (null t))
(null (cdr '(a)))
(not (null (cdr '(1 . 2))))
(not (null 'a))
(endp '())
(not (endp '(1)))
(not (endp '(1 2)))
(not (endp '(1 2 3)))
(not (endp (cons 1 2)))
(endp (cddr '(1 2)))
(let ((a (cons 1 2)))
(and (eq (rplaca a 0) a)
(equal a '(0 . 2))))
(let ((a (list 1 2 3)))
(and (eq (rplaca a 0) a)
(equal a '(0 2 3))))
(let ((a (cons 1 2)))
(and (eq (rplacd a 0) a)
(equal a '(1 . 0))))
(let ((a (list 1 2 3)))
(and (eq (rplacd a 0) a)
(equal a '(1 . 0))))
(eq (car '(a . b)) 'a)
(null (car nil))
(let ((a (cons 1 2)))
(eq (car (list a)) a))
(eq (car '#1=(a . #1#)) 'a)
(eq (cdr '(a . b)) 'b)
(eq (rest '(a . b)) 'b)
(null (cdr nil))
(null (rest nil))
(let ((a (cons 1 2)))
(eq (cdr (cons 1 a)) a))
(let ((a (cons 1 2)))
(eq (rest (cons 1 a)) a))
(let ((x '#1=(a . #1#)))
(eq (cdr x) x))
(let ((x '#1=(a . #1#)))
(eq (rest x) x))
(eq (caar '((a) b c)) 'a)
(eq (cadr '(a b c)) 'b)
(eq (cdar '((a . aa) b c)) 'aa)
(eq (cddr '(a b . c)) 'c)
(eq (caaar '(((a)) b c)) 'a)
(eq (caadr '(a (b) c)) 'b)
(eq (cadar '((a aa) b c)) 'aa)
(eq (caddr '(a b c)) 'c)
(eq (cdaar '(((a . aa)) b c)) 'aa)
(eq (cdadr '(a (b . bb) c)) 'bb)
(eq (cddar '((a aa . aaa) b c)) 'aaa)
(eq (cdddr '(a b c . d)) 'd)
(eq (caaaar '((((a))) b c)) 'a)
(eq (caaadr '(a ((b)) c)) 'b)
(eq (caadar '((a (aa)) b c)) 'aa)
(eq (caaddr '(a b (c))) 'c)
(eq (cadaar '(((a aa)) b c)) 'aa)
(eq (cadadr '(a (b bb) c)) 'bb)
(eq (caddar '((a aa aaa) b c)) 'aaa)
(eq (cadddr '(a b c d)) 'd)
(eq (cdaaar '((((a . aa))) b c)) 'aa)
(eq (cdaadr '(a ((b . bb)) c)) 'bb)
(eq (cdadar '((a (aa . aaa)) b c)) 'aaa)
(eq (cdaddr '(a b (c . cc))) 'cc)
(eq (cddaar '(((a aa . aaa)) b c)) 'aaa)
(eq (cddadr '(a (b bb . bbb) c)) 'bbb)
(eq (cdddar '((a aa aaa . aaaa) b c)) 'aaaa)
(eq (cddddr '(a b c d . e)) 'e)
(let ((x (cons 1 2)))
(and (eql (setf (car x) 0) 0)
(equal x '(0 . 2))))
(let ((x (cons 1 2)))
(and (eql (setf (cdr x) 0) 0)
(equal x '(1 . 0))))
(let ((x (copy-tree '((a) b c))))
(and (eql (setf (caar x) 0) 0)
(equal x '((0) b c))))
(let ((x (list 'a 'b 'c)))
(and (eql (setf (cadr x) 0) 0)
(equal x '(a 0 c))))
(let ((x (copy-tree '((a . aa) b c))))
(and (eql (setf (cdar x) 0) 0)
(equal x '((a . 0) b c))))
(let ((x (copy-tree '(a b . c))))
(and (eql (setf (cddr x) 0) 0)
(equal x '(a b . 0))))
(let ((x (copy-tree '(((a)) b c))))
(and (eql (setf (caaar x) 0) 0)
(equal x '(((0)) b c))))
(let ((x (copy-tree '(a (b) c))))
(and (eql (setf (caadr x) 0) 0)
(equal x '(a (0) c))))
(let ((x (copy-tree '((a aa) b c))))
(and (eql (setf (cadar x) 0) 0)
(equal x '((a 0) b c))))
(let ((x (list 'a 'b 'c)))
(and (eql (setf (caddr x) 0) 0)
(equal x '(a b 0))))
(let ((x (copy-tree '(((a . aa)) b c))))
(and (eql (setf (cdaar x) 0) 0)
(equal x '(((a . 0)) b c))))
(let ((x (copy-tree '(a (b . bb) c))))
(and (eql (setf (cdadr x) 0) 0)
(equal x '(a (b . 0) c))))
(let ((x (copy-tree '((a aa . aaa) b c))))
(and (eql (setf (cddar x) 0) 0)
(equal x '((a aa . 0) b c))))
(let ((x (copy-tree '(a b c . d))))
(and (eql (setf (cdddr x) 0) 0)
(equal x '(a b c . 0))))
(let ((x (copy-tree '((((a))) b c))))
(and (eql (setf (caaaar x) 0) 0)
(equal x '((((0))) b c))))
(let ((x (copy-tree '(a ((b)) c))))
(and (eql (setf (caaadr x) 0) 0)
(equal x '(a ((0)) c))))
(let ((x (copy-tree '((a (aa)) b c))))
(and (eql (setf (caadar x) 0) 0)
(equal x '((a (0)) b c))))
(let ((x (copy-tree '(a b (c)))))
(and (eql (setf (caaddr x) 0) 0)
(equal x '(a b (0)))))
(let ((x (copy-tree '(((a aa)) b c))))
(and (eql (setf (cadaar x) 0) 0)
(equal x '(((a 0)) b c))))
(let ((x (copy-tree '(a (b bb) c))))
(and (eql (setf (cadadr x) 0) 0)
(equal x '(a (b 0) c))))
(let ((x (copy-tree '((a aa aaa) b c))))
(and (eql (setf (caddar x) 0) 0)
(equal x '((a aa 0) b c))))
(let ((x (list 'a 'b 'c 'd)))
(and (eql (setf (cadddr x) 0) 0)
(equal x '(a b c 0))))
(let ((x (copy-tree '((((a . aa))) b c))))
(and (eql (setf (cdaaar x) 0) 0)
(equal x '((((a . 0))) b c))))
(let ((x (copy-tree '(a ((b . bb)) c))))
(and (eql (setf (cdaadr x) 0) 0)
(equal x '(a ((b . 0)) c))))
(let ((x (copy-tree '((a (aa . aaa)) b c))))
(and (eql (setf (cdadar x) 0) 0)
(equal x '((a (aa . 0)) b c))))
(let ((x (copy-tree '(a b (c . cc)))))
(and (eql (setf (cdaddr x) 0) 0)
(equal x '(a b (c . 0)))))
(let ((x (copy-tree '(((a aa . aaa)) b c))))
(and (eql (setf (cddaar x) 0) 0)
(equal x '(((a aa . 0)) b c))))
(let ((x (copy-tree '(a (b bb . bbb) c))))
(and (eql (setf (cddadr x) 0) 0)
(equal x '(a (b bb . 0) c))))
(let ((x (copy-tree '((a aa aaa . aaaa) b c))))
(and (eql (setf (cdddar x) 0) 0)
(equal x '((a aa aaa . 0) b c))))
(let ((x (copy-tree '(a b c d . e))))
(and (eql (setf (cddddr x) 0) 0)
(equal x '(a b c d . 0))))
(eq (copy-tree 'a) 'a)
(eq (copy-tree nil) nil)
(let* ((a (list 'a))
(b (list 'b))
(c (list 'c))
(x3 (cons c nil))
(x2 (cons b x3))
(x (cons a x2))
(y (copy-tree x)))
(and (not (eq x y))
(not (eq (car x) (car y)))
(not (eq (cdr x) (cdr y)))
(not (eq (cadr x) (cadr y)))
(not (eq (cddr x) (cddr y)))
(not (eq (caddr x) (caddr y)))
(eq (cdddr x) (cdddr y))
(equal x y)
(eq (car x) a) (eq (car a) 'a) (eq (cdr a) nil)
(eq (cdr x) x2)
(eq (car x2) b) (eq (car b) 'b) (eq (cdr b) nil)
(eq (cdr x2) x3)
(eq (car x3) c) (eq (car c) 'c) (eq (cdr c) nil)
(eq (cdr x3) nil)))
(let* ((x (list (list 'a 1) (list 'b 2) (list 'c 3)))
(y (copy-tree x)))
(and (not (eq (car x) (car y)))
(not (eq (cadr x) (cadr y)))
(not (eq (caddr x) (caddr y)))))
(let* ((x (list (list (list 1))))
(y (copy-tree x)))
(and (not (eq x y))
(not (eq (car x) (car y)))
(not (eq (caar x) (caar y)))))
(let ((x (list 'a 'b 'c 'd)))
(and (equal (sublis '((a . 1) (b . 2) (c . 3)) x)
'(1 2 3 d))
(equal x '(a b c d))))
(let* ((n (cons 'n nil))
(m (cons 'm n))
(l (cons 'l m))
(x (sublis '((a . 1) (b . 2) (c . 3)) l)))
(and (eq x l)
(eq (car l) 'l)
(eq (cdr l) m)
(eq (car m) 'm)
(eq (cdr m) n)
(eq (car n) 'n)
(eq (cdr n) nil)))
(eq (sublis '() '()) '())
(equal (sublis '() '(1 2 3)) '(1 2 3))
(eq (sublis '((a . 1) (b . 2)) '()) nil)
(equal (sublis '((a b c) (b c d) (c d e))
'(a b c))
'((b c) (c d) (d e)))
(equal (sublis '((a . 1) (b . 2) (c . 3))
'(((a)) (b) c))
'(((1)) (2) 3))
(equal (sublis '(((a) . 1) ((b) . 2) ((c) . 3))
'((((a))) ((b)) (c)))
'((((a))) ((b)) (c)))
(equal (sublis '(((a) . 1) ((b) . 2) ((c) . 3))
'((((a))) ((b)) (c))
:test #'equal)
'(((1)) (2) 3))
(equal (sublis '(((a) . 1) ((b) . 2) ((c) . 3))
'((((a))) ((b)) (c))
:test-not (complement #'equal))
'(((1)) (2) 3))
(equal (sublis '((a . 1) (b . 2) (c . 3))
'((((a))) ((b)) (c))
:key #'car)
'(((1)) (2) 3))
(equal (sublis '(((a) . 1) ((b) . 2) ((c) . 3))
'((((a))) ((b)) (c))
:key #'car
:test #'equal)
'((1) 2 . 3))
(equal (nsublis '((a . 1) (b . 2) (c . 3))
(list 'a 'b 'c 'd))
'(1 2 3 d))
(let* ((x (list 'a 'b 'c 'd))
(y (nsublis '((a . 1) (b . 2) (c . 3)) x)))
(and (eq x y)
(equal x '(1 2 3 d))))
(let ((x (list 'l 'm 'n)))
(and (eq (nsublis '((a . 1) (b . 2) (c . 3)) x) x)
(equal x '(l m n))))
(let* ((n (cons 'n nil))
(m (cons 'm n))
(l (cons 'l m))
(x (nsublis '((a . 1) (b . 2) (c . 3)) l)))
(and (eq x l)
(eq (car l) 'l)
(eq (cdr l) m)
(eq (car m) 'm)
(eq (cdr m) n)
(eq (car n) 'n)
(eq (cdr n) nil)))
(eq (nsublis '() '()) '())
(equal (nsublis '() '(1 2 3)) '(1 2 3))
(eq (nsublis '((a . 1) (b . 2)) '()) nil)
(equal (nsublis '((a b c) (b c d) (c d e))
(list 'a 'b 'c))
'((b c) (c d) (d e)))
(equal (nsublis '((a . 1) (b . 2) (c . 3))
(copy-tree '(((a)) (b) c)))
'(((1)) (2) 3))
(equal (nsublis '(((a) . 1) ((b) . 2) ((c) . 3))
(copy-tree '((((a))) ((b)) (c))))
'((((a))) ((b)) (c)))
(equal (nsublis '(((a) . 1) ((b) . 2) ((c) . 3))
(copy-tree '((((a))) ((b)) (c)))
:test #'equal)
'(((1)) (2) 3))
(equal (nsublis '(((a) . 1) ((b) . 2) ((c) . 3))
(copy-tree '((((a))) ((b)) (c)))
:test-not (complement #'equal))
'(((1)) (2) 3))
(equal (nsublis '((a . 1) (b . 2) (c . 3))
(copy-tree '((((a))) ((b)) (c)))
:key #'car)
'(((1)) (2) 3))
(equal (nsublis '(((a) . 1) ((b) . 2) ((c) . 3))
(copy-tree '((((a))) ((b)) (c)))
:key 'car
:test #'equal)
'((1) 2 . 3))
(let ((tree '(old (old) ((old)))))
(equal (subst 'new 'old tree)
'(new (new) ((new)))))
(eq (subst 'new 'old 'old) 'new)
(eq (subst 'new 'old 'not-old) 'not-old)
(equal (subst 'new '(b) '(a ((b))) :test #'equal)
'(a (new)))
(equal (subst 'new '(b) '(a ((b))) :test-not (complement #'equal))
'(a (new)))
(equal (subst 'x 3 '(1 (1 2) (1 2 3) (1 2 3 4))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) X X))
(equal (subst 'x "D" '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d"))
:test #'equalp
:key #'(lambda (y) (and (listp y) (fourth y))))
'("a" ("a" "b") ("a" "b" "c") X))
(equal (subst-if 'new #'(lambda (x) (eq x 'old)) '(old old))
'(new new))
(eq (subst-if 'new #'(lambda (x) (eq x 'old)) 'old) 'new)
(equal (subst-if 'x #'(lambda (x) (eql x 3)) '(1 (1 2) (1 2 3) (1 2 3 4))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) x x))
(let ((tree '(old (old) ((old)))))
(equal (subst-if 'new #'(lambda (x) (eq x 'old)) tree)
'(new (new) ((new)))))
(eq (subst-if 'new #'(lambda (x) (eq x 'old)) 'old)
'new)
(eq (subst-if 'new #'(lambda (x) (eq x 'old)) 'not-old)
'not-old)
(equal (subst-if 'new #'(lambda (x) (equal x '(b))) '(a ((b))))
'(a (new)))
(equal (subst-if 'x
#'(lambda (x) (eql x 3)) '(1 (1 2) (1 2 3) (1 2 3 4))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) X X))
(equal (subst-if 'x
#'(lambda (x) (equalp x "D"))
'("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d"))
:key #'(lambda (y) (and (listp y) (fourth y))))
'("a" ("a" "b") ("a" "b" "c") X))
(equal (subst-if-not 'new #'(lambda (x) (not (eq x 'old))) '(old old))
'(new new))
(eq (subst-if-not 'new #'(lambda (x) (not (eq x 'old))) 'old) 'new)
(equal (subst-if-not 'x #'(lambda (x) (not (eql x 3)))
'(1 (1 2) (1 2 3) (1 2 3 4))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) x x))
(let ((tree '(old (old) ((old)))))
(equal (subst-if-not 'new #'(lambda (x) (not (eq x 'old))) tree)
'(new (new) ((new)))))
(eq (subst-if-not 'new #'(lambda (x) (not (eq x 'old))) 'old)
'new)
(eq (subst-if-not 'new #'(lambda (x) (not (eq x 'old))) 'not-old)
'not-old)
(equal (subst-if-not 'new #'(lambda (x) (not (equal x '(b)))) '(a ((b))))
'(a (new)))
(equal (subst-if-not 'x
#'(lambda (x) (not (eql x 3)))
'(1 (1 2) (1 2 3) (1 2 3 4))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) X X))
(equal (subst-if-not 'x
#'(lambda (x) (not (equalp x "D")))
'("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d"))
:key #'(lambda (y) (and (listp y) (fourth y))))
'("a" ("a" "b") ("a" "b" "c") X))
(let ((tree '(old (old) ((old)))))
(equal (nsubst 'new 'old (copy-tree tree))
'(new (new) ((new)))))
(let* ((tree (copy-tree '(old (old) ((old)))))
(new-tree (nsubst 'new 'old tree)))
(and (eq tree new-tree)
(equal tree '(new (new) ((new))))))
(eq (nsubst 'new 'old 'old) 'new)
(eq (nsubst 'new 'old 'not-old) 'not-old)
(equal (nsubst 'new '(b) (copy-tree '(a ((b)))) :test #'equal)
'(a (new)))
(equal (nsubst 'new '(b) (copy-tree '(a ((b)))) :test-not (complement #'equal))
'(a (new)))
(equal (nsubst 'x 3 (copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) X X))
(equal (nsubst 'x "D"
(copy-tree '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d")))
:test #'equalp
:key #'(lambda (y) (and (listp y) (fourth y))))
'("a" ("a" "b") ("a" "b" "c") X))
(equal (nsubst-if 'new #'(lambda (x) (eq x 'old)) (list 'old 'old))
'(new new))
(eq (nsubst-if 'new #'(lambda (x) (eq x 'old)) 'old) 'new)
(let* ((x (copy-tree '(old (old) ((old)) (old) old)))
(y (nsubst-if 'new #'(lambda (x) (eq x 'old)) x)))
(and (eq x y)
(equal x '(new (new) ((new)) (new) new))))
(equal (nsubst-if 'x
#'(lambda (x) (eql x 3))
(copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) x x))
(let ((tree '(old (old) ((old)))))
(equal (nsubst-if 'new #'(lambda (x) (eq x 'old)) (copy-tree tree))
'(new (new) ((new)))))
(eq (nsubst-if 'new #'(lambda (x) (eq x 'old)) 'old)
'new)
(eq (nsubst-if 'new #'(lambda (x) (eq x 'old)) 'not-old)
'not-old)
(equal (nsubst-if 'new #'(lambda (x) (equal x '(b)))
(copy-tree '(a ((b)))))
'(a (new)))
(equal (nsubst-if 'x
#'(lambda (x) (eql x 3))
(copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) X X))
(equal (nsubst-if 'x
#'(lambda (x) (equalp x "D"))
(copy-tree '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d")))
:key #'(lambda (y) (and (listp y) (fourth y))))
'("a" ("a" "b") ("a" "b" "c") X))
(equal (nsubst-if-not 'new #'(lambda (x) (not (eq x 'old)))
(list 'old 'old))
'(new new))
(eq (nsubst-if-not 'new #'(lambda (x) (not (eq x 'old))) 'old) 'new)
(let* ((x (copy-tree '(old (old) ((old)) (old) old)))
(y (nsubst-if-not 'new #'(lambda (x) (not (eq x 'old))) x)))
(and (eq x y)
(equal x '(new (new) ((new)) (new) new))))
(equal (nsubst-if-not 'x #'(lambda (x) (not (eql x 3)))
(copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) x x))
(let ((tree '(old (old) ((old)))))
(equal (nsubst-if-not 'new #'(lambda (x) (not (eq x 'old))) (copy-tree tree))
'(new (new) ((new)))))
(eq (nsubst-if-not 'new #'(lambda (x) (not (eq x 'old))) 'old)
'new)
(eq (nsubst-if-not 'new #'(lambda (x) (not (eq x 'old))) 'not-old)
'not-old)
(equal (nsubst-if-not 'new #'(lambda (x) (not (equal x '(b))))
(copy-tree '(a ((b)))))
'(a (new)))
(equal (nsubst-if-not 'x
#'(lambda (x) (not (eql x 3)))
(copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
:key #'(lambda (y) (and (listp y) (third y))))
'(1 (1 2) X X))
(equal
(nsubst-if-not 'x
#'(lambda (x) (not (equalp x "D")))
(copy-tree '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d")))
:key #'(lambda (y) (and (listp y) (fourth y))))
'("a" ("a" "b") ("a" "b" "c") X))
(tree-equal 'a 'a)
(not (tree-equal 'a 'b))
(tree-equal '(a (b (c))) '(a (b (c))))
(tree-equal '(a (b (c))) '(a (b (c))) :test #'eq)
(tree-equal '(a (b (c))) '(a (b (c))) :test-not (complement #'eq))
(not (tree-equal '("a" ("b" ("c"))) '("a" ("b" ("c")))))
(tree-equal '("a" ("b" ("c"))) '("a" ("b" ("c"))) :test #'equal)
(tree-equal '("a" ("b" ("c"))) '("a" ("b" ("c")))
:test-not (complement #'equal))
(not (tree-equal '(a b) '(a (b))))
(eq (copy-list '()) '())
(equal (copy-list '(a b c))
'(a b c))
(equal (copy-list '(a . b)) '(a . b))
(let* ((x '(a b c))
(y (copy-list x)))
(and (equal x y)
(not (eq x y))))
(let* ((a (list 'a))
(b (list 'b))
(c (list 'c))
(x (list a b c))
(y (copy-list x)))
(and (equal x y)
(not (eq x y))
(eq (car x) (car y))
(eq (cadr x) (cadr y))
(eq (caddr x) (caddr y))
(eq (caar x) 'a)
(eq (caadr x) 'b)
(eq (caaddr x) 'c)))
(null (list))
(equal (list 1) '(1))
(equal (list 1 2 3) '(1 2 3))
(equal (list* 1 2 '(3)) '(1 2 3))
(equal (list* 1 2 'x) '(1 2 . x))
(equal (list* 1 2 '(3 4)) '(1 2 3 4))
(eq (list* 'x) 'x)
(eql (list-length '()) 0)
(eql (list-length '(1)) 1)
(eql (list-length '(1 2)) 2)
(null (list-length '#1=(1 2 3 4 . #1#)))
(equal (make-list 5) '(nil nil nil nil nil))
(equal (make-list 3 :initial-element 'rah) '(rah rah rah))
(equal (make-list 2 :initial-element '(1 2 3)) '((1 2 3) (1 2 3)))
(null (make-list 0))
(null (make-list 0 :initial-element 'new-element))
(let ((place nil))
(and (equal (push 0 place) '(0))
(equal place '(0))))
(let ((place (list 1 2 3)))
(and (equal (push 0 place) '(0 1 2 3))
(equal place '(0 1 2 3))))
(let ((a (list (list 1 2 3) 9)))
(and (equal (push 0 (car a)) '(0 1 2 3))
(equal a '((0 1 2 3) 9))))
(let ((x (copy-tree '(a (b c) d))))
(and (equal (push 'aa (cadr x)) '(aa b c))
(equal x '(a (aa b c) d))))
(let ((place (list 1 2 3)))
(and (eql (pop place) 1)
(equal place '(2 3))))
(let ((place '()))
(and (eql (pop place) nil)
(equal place '())))
(let ((a (list (list 1 2 3) 9)))
(and (eql (pop (car a)) 1)
(equal a '((2 3) 9))))
(let ((x (list 'a 'b 'c)))
(and (eq (pop (cdr x)) 'b)
(equal x '(a c))))
(eq (first '(a . b)) 'a)
(null (first nil))
(let ((a (cons 1 2)))
(eq (first (list a)) a))
(eq (first '#1=(a . #1#)) 'a)
(eql (first '(1 2 3)) '1)
(eql (second '(1 2 3)) '2)
(eql (third '(1 2 3)) '3)
(eql (fourth '(1 2 3 4)) '4)
(eql (fifth '(1 2 3 4 5)) '5)
(eql (sixth '(1 2 3 4 5 6)) '6)
(eql (seventh '(1 2 3 4 5 6 7)) '7)
(eql (eighth '(1 2 3 4 5 6 7 8)) '8)
(eql (ninth '(1 2 3 4 5 6 7 8 9)) '9)
(eql (tenth '(1 2 3 4 5 6 7 8 9 10)) '10)
(let ((x (list 'a 'b 'c)))
(and (eql (setf (first x) 0) 0)
(equal x '(0 b c))))
(let ((x (list 'a 'b 'c)))
(and (eql (setf (second x) 0) 0)
(equal x '(a 0 c))))
(let ((x (list 'a 'b 'c)))
(and (eql (setf (third x) 0) 0)
(equal x '(a b 0))))
(let ((x (list 'a 'b 'c 'd)))
(and (eql (setf (fourth x) 0) 0)
(equal x '(a b c 0))))
(let ((x (list 'a 'b 'c 'd 'e)))
(and (eql (setf (fifth x) 0) 0)
(equal x '(a b c d 0))))
(let ((x (list 'a 'b 'c 'd 'e 'f)))
(and (eql (setf (sixth x) 0) 0)
(equal x '(a b c d e 0))))
(let ((x (list 'a 'b 'c 'd 'e 'f 'g)))
(and (eql (setf (seventh x) 0) 0)
(equal x '(a b c d e f 0))))
(let ((x (list 'a 'b 'c 'd 'e 'f 'g 'h)))
(and (eql (setf (eighth x) 0) 0)
(equal x '(a b c d e f g 0))))
(let ((x (list 'a 'b 'c 'd 'e 'f 'g 'h 'i)))
(and (eql (setf (ninth x) 0) 0)
(equal x '(a b c d e f g h 0))))
(let ((x (list 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j)))
(and (eql (setf (tenth x) 0) 0)
(equal x '(a b c d e f g h i 0))))
(let ((x '(a b c)))
(eq (nthcdr 0 x) x))
(let ((x '(a b c)))
(eq (nthcdr 1 x) (cdr x)))
(let ((x '(a b c)))
(eq (nthcdr 2 x) (cddr x)))
(let ((x '(a b c)))
(eq (nthcdr 2 x) (cddr x)))
(let ((x '(a b c)))
(eq (nthcdr 3 x) (cdddr x)))
(equal (nthcdr 0 '(0 1 2)) '(0 1 2))
(equal (nthcdr 1 '(0 1 2)) '(1 2))
(equal (nthcdr 2 '(0 1 2)) '(2))
(equal (nthcdr 3 '(0 1 2)) '())
(eql (nthcdr 1 '(0 . 1)) 1)
(eql (nth 0 '(a b c)) 'a)
(eql (nth 1 '(a b c)) 'b)
(eql (nth 2 '(a b c)) 'c)
(eql (nth 3 '(a b c)) '())
(eql (nth 4 '(a b c)) '())
(eql (nth 5 '(a b c)) '())
(eql (nth 6 '(a b c)) '())
(eq (nth 0 '(a . b)) 'a)
(let ((x (list 'a 'b 'c)))
(and (eq (setf (nth 0 x) 'z) 'z)
(equal x '(z b c))))
(let ((x (list 'a 'b 'c)))
(and (eq (setf (nth 1 x) 'z) 'z)
(equal x '(a z c))))
(let ((x (list 'a 'b 'c)))
(and (eq (setf (nth 2 x) 'z) 'z)
(equal x '(a b z))))
(let ((0-to-3 (list 0 1 2 3)))
(and (equal (setf (nth 2 0-to-3) "two") "two")
(equal 0-to-3 '(0 1 "two" 3))))
(eq (nconc) '())
(equal (nconc nil (list 'a 'b 'c) (list 'd 'e 'f))
'(a b c d e f))
(equal (nconc nil nil (list 'a 'b 'c) (list 'd 'e 'f))
'(a b c d e f))
(equal (nconc nil nil nil (list 'a 'b 'c) (list 'd 'e 'f))
'(a b c d e f))
(let* ((x (list 'a 'b 'c)))
(eq (nconc x) x))
(let* ((x (list 'a 'b 'c))
(y (list 'd 'e 'f))
(list (nconc x y)))
(and (eq list x)
(eq (nthcdr 3 list) y)
(equal list '(a b c d e f))))
(let* ((x (list 'a))
(y (list 'b))
(z (list 'c))
(list (nconc x y z)))
(and (eq x list)
(eq (first list) 'a)
(eq y (cdr list))
(eq (second list) 'b)
(eq z (cddr list))
(eq (third list) 'c)))
(equal (append '(a b) '() '(c d) '(e f))
'(a b c d e f))
(null (append))
(null (append '()))
(null (append '() '()))
(eq (append 'a) 'a)
(eq (append '() 'a) 'a)
(eq (append '() '() 'a) 'a)
(equal (append '(a b) 'c) '(a b . c))
(let* ((x '(a b c))
(y '(d e f))
(z (append x y)))
(and (equal z '(a b c d e f))
(eq (nthcdr 3 z) y)
(not (eq x z))))
(equal (revappend '(a b c) '(d e f))
'(c b a d e f))
(let* ((x '(a b c))
(y '(d e f))
(z (revappend x y)))
(and (equal z '(c b a d e f))
(not (eq x z))
(eq (nthcdr 3 z) y)))
(let ((x '(a b c)))
(eq (revappend '() x) x))
(null (revappend '() '()))
(eq (revappend '() 'a) 'a)
(equal (revappend '(a) 'b) '(a . b))
(equal (revappend '(a) '()) '(a))
(equal (revappend '(1 2 3) '()) '(3 2 1))
(equal (nreconc (list 'a 'b 'c) '(d e f))
'(c b a d e f))
(let* ((x (list 'a 'b 'c))
(y '(d e f))
(z (nreconc x y)))
(and (equal z '(c b a d e f))
(eq (nthcdr 3 z) y)))
(let ((x (list 'a 'b 'c)))
(eq (nreconc '() x) x))
(null (nreconc '() '()))
(eq (nreconc '() 'a) 'a)
(equal (nreconc (list 'a) 'b) '(a . b))
(equal (nreconc (list 'a) '()) '(a))
(equal (nreconc (list 1 2 3) '()) '(3 2 1))
(null (butlast nil))
(null (butlast nil 1))
(null (butlast nil 2))
(null (butlast nil 3))
(equal (butlast '(1 2 3 4 5)) '(1 2 3 4))
(equal (butlast '(1 2 3 4 5) 1) '(1 2 3 4))
(equal (butlast '(1 2 3 4 5) 2) '(1 2 3))
(equal (butlast '(1 2 3 4 5) 3) '(1 2))
(equal (butlast '(1 2 3 4 5) 4) '(1))
(equal (butlast '(1 2 3 4 5) 5) '())
(equal (butlast '(1 2 3 4 5) 6) '())
(equal (butlast '(1 2 3 4 5) 7) '())
(equal (butlast '(1 2 3 4 5 . 6)) '(1 2 3 4))
(equal (butlast '(1 2 3 4 5 . 6) 1) '(1 2 3 4))
(equal (butlast '(1 2 3 4 5 . 6) 2) '(1 2 3))
(equal (butlast '(1 2 3 4 5 . 6) 3) '(1 2))
(equal (butlast '(1 2 3 4 5 . 6) 4) '(1))
(equal (butlast '(1 2 3 4 5 . 6) 5) '())
(equal (butlast '(1 2 3 4 5 . 6) 6) '())
(equal (butlast '(1 2 3 4 5 . 6) 7) '())
(let ((a '(1 2 3 4 5)))
(equal (butlast a 3) '(1 2))
(equal a '(1 2 3 4 5)))
(null (nbutlast nil))
(null (nbutlast nil 1))
(null (nbutlast nil 2))
(null (nbutlast nil 3))
(equal (nbutlast (list 1 2 3 4 5)) '(1 2 3 4))
(equal (nbutlast (list 1 2 3 4 5) 1) '(1 2 3 4))
(equal (nbutlast (list 1 2 3 4 5) 2) '(1 2 3))
(equal (nbutlast (list 1 2 3 4 5) 3) '(1 2))
(equal (nbutlast (list 1 2 3 4 5) 4) '(1))
(equal (nbutlast (list 1 2 3 4 5) 5) '())
(equal (nbutlast (list 1 2 3 4 5) 6) '())
(equal (nbutlast (list 1 2 3 4 5) 7) '())
(equal (nbutlast (list* 1 2 3 4 5 6)) '(1 2 3 4))
(equal (nbutlast (list* 1 2 3 4 5 6) 1) '(1 2 3 4))
(equal (nbutlast (list* 1 2 3 4 5 6) 2) '(1 2 3))
(equal (nbutlast (list* 1 2 3 4 5 6) 3) '(1 2))
(equal (nbutlast (list* 1 2 3 4 5 6) 4) '(1))
(equal (nbutlast (list* 1 2 3 4 5 6) 5) '())
(equal (nbutlast (list* 1 2 3 4 5 6) 6) '())
(equal (nbutlast (list* 1 2 3 4 5 6) 7) '())
(let* ((a '(1 2 3 4 5))
(b (nbutlast a 3)))
(and (eq a b)
(equal a '(1 2))))
(let ((x '(0 1 2 3 4 5 6 7 8 9)))
(eq (last x) (nthcdr 9 x)))
(null (last nil))
(let ((x '(0 1 . 2)))
(eq (last x) (cdr x)))
(eql (last '(1 . 2) 0) 2)
(let ((x '(0 1 2 3 4)))
(eq (last x 0) nil))
(let ((x '(0 1 2 3 4)))
(eq (last x) (nthcdr 4 x)))
(let ((x '(0 1 2 3 4)))
(eq (last x 1) (nthcdr 4 x)))
(let ((x '(0 1 2 3 4)))
(eq (last x 2) (cdddr x)))
(let ((x '(0 1 2 3 4)))
(eq (last x 3) (cddr x)))
(let ((x '(0 1 2 3 4)))
(eq (last x 4) (cdr x)))
(let ((x '(0 1 2 3 4)))
(eq (last x 5) x))
(let ((x '(0 1 2 3 4)))
(eq (last x 6) x))
(let ((x '(0 1 2 3 4)))
(eq (last x 7) x))
(let ((x '(0 1 2 3 4)))
(eq (last x 8) x))
(tailp '() '())
(tailp '() '(1))
(tailp '() '(1 2 3 4 5 6 7 8 9))
(let ((x '(1 2 3)))
(and (tailp x x)
(tailp (cdr x) x)
(tailp (cddr x) x)
(tailp (cdddr x) x)))
(let ((x '(1 . 2)))
(and (tailp x x)
(tailp (cdr x) x)))
(not (tailp nil '(1 . 2)))
(not (tailp 'x '(1 2 3 4 5 6)))
(not (tailp (list 1 2 3) '(1 2 3)))
(let ((x '(1 2 3 4 5 . 6)))
(tailp (last x) x))
(let ((x '(1 2 3 4 5 . 6)))
(tailp (last x) x))
(null (ldiff '() '()))
(equal (ldiff '(1 . 2) 2) '(1))
(equal (ldiff '(1 2 3 4 5 6 7 8 9) '())
'(1 2 3 4 5 6 7 8 9))
(let ((x '(1 2 3)))
(and (null (ldiff x x))
(equal (ldiff x (cdr x)) '(1))
(equal (ldiff x (cddr x)) '(1 2))
(equal (ldiff x (cdddr x)) '(1 2 3))))
(let* ((x '(1 2 3))
(y '(a b c))
(z (ldiff x y)))
(and (not (eq x z))
(equal z '(1 2 3))))
(equal (member 'a '(a b c d)) '(a b c d))
(equal (member 'b '(a b c d)) '(b c d))
(equal (member 'c '(a b c d)) '(c d))
(equal (member 'd '(a b c d)) '(d))
(equal (member 'e '(a b c d)) '())
(equal (member 'f '(a b c d)) '())
(let ((x '(a b c d)))
(eq (member 'a x) x)
(eq (member 'b x) (cdr x))
(eq (member 'c x) (cddr x))
(eq (member 'd x) (cdddr x))
(eq (member 'e x) nil))
(equal (member 'a '(a b c d) :test #'eq) '(a b c d))
(equal (member 'b '(a b c d) :test #'eq) '(b c d))
(equal (member 'c '(a b c d) :test #'eq) '(c d))
(equal (member 'd '(a b c d) :test #'eq) '(d))
(equal (member 'e '(a b c d) :test #'eq) '())
(equal (member 'f '(a b c d) :test #'eq) '())
(null (member 'a '()))
(let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
(y (member 'd x :key #'cdr :test #'eq)))
(and (equal y '((4 . d) (5 . e)))
(eq y (nthcdr 3 x))))
(let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
(y (member 'd x :key #'cdr)))
(and (equal y '((4 . d) (5 . e)))
(eq y (nthcdr 3 x))))
(let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
(y (member 'd x :key #'cdr :test-not (complement #'eq))))
(and (equal y '((4 . d) (5 . e)))
(eq y (nthcdr 3 x))))
(let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
(y (member 'd x :test-not (complement #'eq))))
(eq y nil))
(equal (member 2 '((1 . 2) (3 . 4)) :test-not #'= :key #'cdr)
'((3 . 4)))
(equal (member-if #'(lambda (x) (eql x 'a)) '(a b c d)) '(a b c d))
(equal (member-if #'(lambda (x) (eql x 'b)) '(a b c d)) '(b c d))
(equal (member-if #'(lambda (x) (eql x 'c)) '(a b c d)) '(c d))
(equal (member-if #'(lambda (x) (eql x 'd)) '(a b c d)) '(d))
(equal (member-if #'(lambda (x) (eql x 'e)) '(a b c d)) '())
(equal (member-if #'(lambda (x) (eql x 'f)) '(a b c d)) '())
(null (member-if #'(lambda (x) (eql x 'a)) '()))
(let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
(y (member-if #'(lambda (p) (eq p 'd)) x :key #'cdr)))
(and (equal y '((4 . d) (5 . e)))
(eq y (nthcdr 3 x))))
(equal (member-if #'cdr '((1) (2 . 2) (3 3 . 3)))
'((2 . 2) (3 3 . 3)))
(null (member-if #'zerop '(7 8 9)))
(equal (member-if-not #'(lambda (x) (not (eql x 'a))) '(a b c d)) '(a b c d))
(equal (member-if-not #'(lambda (x) (not (eql x 'b))) '(a b c d)) '(b c d))
(equal (member-if-not #'(lambda (x) (not (eql x 'c))) '(a b c d)) '(c d))
(equal (member-if-not #'(lambda (x) (not (eql x 'd))) '(a b c d)) '(d))
(equal (member-if-not #'(lambda (x) (not (eql x 'e))) '(a b c d)) '())
(equal (member-if-not #'(lambda (x) (not (eql x 'f))) '(a b c d)) '())
(null (member-if-not #'(lambda (x) (not (eql x 'a))) '()))
(let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
(y (member-if-not #'(lambda (p) (not (eq p 'd))) x :key #'cdr)))
(and (equal y '((4 . d) (5 . e)))
(eq y (nthcdr 3 x))))
(let ((x '((1 2) (2 3) (3 4) (4 5)))
(y nil))
(and (eq (mapc #'(lambda (a) (push (car a) y)) x) x)
(equal y '(4 3 2 1))))
(let ((dummy nil)
(list-1 '(1 2 3 4)))
(and (eq (mapc #'(lambda (&rest x) (setq dummy (append dummy x)))
list-1
'(a b c d e)
'(x y z))
list-1)
(equal dummy '(1 a x 2 b y 3 c z))))
(let* ((x '(0 1 2 3))
(y nil)
(z (mapc #'(lambda (a b c) (push (list a b c) y))
x '(1 2 3 4) '(2 3 4 5))))
(and (eq z x)
(equal y '((3 4 5) (2 3 4) (1 2 3) (0 1 2)))))
(let* ((x '(0 1 2 3))
(y nil)
(z (mapc #'(lambda (a b c) (push (list a b c) y))
nil x '(1 2 3 4) '(2 3 4 5))))
(and (null z)
(null y)))
(let ((sum 0))
(mapc #'(lambda (&rest rest) (setq sum (+ sum (apply #'+ rest))))
'(0 1 2)
'(1 2 0)
'(2 0 1))
(eql sum 9))
(let ((result 'initial-value)
(list-1 nil))
(and (eq (mapc #'(lambda (a b) (setq result (cons (cons a b) result))) list-1) list-1)
(eq result 'initial-value)))
(let ((result 'initial-value)
(list-1 nil))
(and (eq (mapc #'(lambda (a b) (setq result (cons (cons a b) result)))
list-1
'(1 2 3))
list-1)
(eq result 'initial-value)))
(let ((result 'initial-value)
(list-1 '(1 2 3)))
(and (eq (mapc #'(lambda (a b) (setq result (cons (cons a b) result)))
list-1
'())
list-1)
(eq result 'initial-value)))
(equal (mapcar #'car '((1 2) (2 3) (3 4) (4 5)))
'(1 2 3 4))
(null (mapcar #'identity '()))
(equal (mapcar #'list '(0 1 2 3) '(a b c d) '(w x y z))
'((0 a w) (1 b x) (2 c y) (3 d z)))
(null (mapcar #'list '() '(0 1 2 3) '(1 2 3 4) '(2 3 4 5)))
(null (mapcar #'list '(0 1 2 3) '() '(1 2 3 4) '(2 3 4 5)))
(null (mapcar #'list '(0 1 2 3) '(1 2 3 4) '() '(2 3 4 5)))
(null (mapcar #'list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '()))
(equal (mapcar #'list '(0) '(a b) '(x y z)) '((0 a x)))
(equal (mapcar #'list '(a b) '(0) '(x y z)) '((a 0 x)))
(equal (mapcar #'list '(a b) '(x y z) '(0)) '((a x 0)))
(equal (mapcar #'cons '(a b c) '(1 2 3))
'((A . 1) (B . 2) (C . 3)))
(equal (mapcan #'cdr (copy-tree '((1 2) (2 3) (3 4) (4 5))))
'(2 3 4 5))
(equal (mapcan #'append
'((1 2 3) (4 5 6) (7 8 9))
'((a) (b c) (d e f))
(list (list 'x 'y 'z) (list 'y 'z) (list 'z)))
'(1 2 3 a x y z 4 5 6 b c y z 7 8 9 d e f z))
(null (mapcan #'append '((1 2 3) (4 5 6) (7 8 9)) '((a) (b c)) '()))
(null (mapcan #'append '((1 2 3) (4 5 6) (7 8 9)) '() '((a) (b c))))
(null (mapcan #'append '() '((1 2 3) (4 5 6) (7 8 9)) '((a) (b c))))
(equal (mapcan #'list
(list 1 2 3 4 5)
(list 2 3 4 5 6)
(list 3 4 5 6 7)
(list 4 5 6 7 8))
'(1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8))
(equal (mapcan #'(lambda (x y) (if (null x) nil (list x y)))
'(nil nil nil d e)
'(1 2 3 4 5 6))
'(d 4 e 5))
(equal (mapcan #'(lambda (x) (and (numberp x) (list x)))
'(a 1 b c 3 4 d 5))
'(1 3 4 5))
(equal (maplist #'identity '(a b c d))
'((a b c d) (b c d) (c d) (d)))
(equal (maplist #'car '((1 2) (2 3) (3 4) (4 5)))
'((1 2) (2 3) (3 4) (4 5)))
(equal (maplist #'list '(a b c) '(b c d) '(c d e))
'(((a b c) (b c d) (c d e))
((b c) (c d) (d e))
((c) (d) (e))))
(equal (maplist #'append '(a b c) '(b c d) '(c d e))
'((a b c b c d c d e) (b c c d d e) (c d e)))
(equal (maplist #'append '(a b c) '(b c) '(c))
'((a b c b c c)))
(null (maplist #'append '() '(a b c) '(b c) '(c)))
(null (maplist #'append '(a b c) '() '(b c) '(c)))
(null (maplist #'append '(a b c) '(b c) '(c) '()))
(let ((x '((1 2) (2 3) (3 4) (4 5)))
(y nil))
(and (eq (mapl #'(lambda (a) (push (car a) y)) x) x)
(equal y '((4 5) (3 4) (2 3) (1 2)))))
(let ((x nil))
(and (null (mapl #'(lambda (&rest rest) (push rest x)) '() '(0) '(0 1)))
(null x)))
(let ((x nil))
(and (equal (mapl #'(lambda (&rest rest) (push rest x)) '(0) '() '(0 1))
'(0))
(null x)))
(let ((x nil))
(and (equal (mapl #'(lambda (&rest rest) (push rest x)) '(0) '(0 1) '())
'(0))
(null x)))
(equal (mapcon #'car (copy-tree '((1 2) (2 3) (3 4) (4 5))))
'(1 2 2 3 3 4 4 5))
(equal (mapcon #'list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '(3 4 5 6))
'((0 1 2 3) (1 2 3 4) (2 3 4 5) (3 4 5 6) (1 2 3) (2 3 4) (3 4 5)
(4 5 6) (2 3) (3 4) (4 5) (5 6) (3) (4) (5) (6)))
(null (mapcon #'list '() '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '(3 4 5 6)))
(null (mapcon #'list '(0 1 2 3) '() '(1 2 3 4) '(2 3 4 5) '(3 4 5 6)))
(null (mapcon #'list '(0 1 2 3) '(1 2 3 4) '() '(2 3 4 5) '(3 4 5 6)))
(null (mapcon #'list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '() '(3 4 5 6)))
(null (mapcon #'list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '(3 4 5 6) '()))
(let* ((x '((apple . 1) (orange . 2) (grapes . 3)))
(y (acons 'plum 9 x)))
(and (equal y '((plum . 9) (apple . 1) (orange . 2) (grapes . 3)))
(eq x (cdr y))))
(equal (acons 'a '0 nil) '((a . 0)))
(equal (acons 'apple 1 (acons 'orange 2 (acons 'grapes '3 nil)))
'((apple . 1) (orange . 2) (grapes . 3)))
(equal (acons nil nil nil) '((nil)))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (assoc 'y alist) (cadr alist)))
(null (assoc 'no-such-key '((x . 100) (y . 200) (z . 50))))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (assoc 'y alist :test #'eq) (cadr alist)))
(null (assoc 'key '()))
(null (assoc 'nil '(())))
(null (assoc 'nil '(() ())))
(let ((alist '(nil nil nil (x . 100) (y . 200) (z . 50))))
(eq (assoc 'y alist) (car (cddddr alist))))
(let ((alist '((1 . a) nil (2 . b) (nil))))
(eq (assoc 'nil alist) (cadddr alist)))
(let ((alist '((x . 100) (y . 200) (x . 100) (z . 50))))
(eq (assoc 'y alist) (cadr alist)))
(let ((alist '((a . 1) (b . 2) (c . 3) (d . 4))))
(eq (assoc 'a alist :test-not (complement #'eq)) (car alist)))
(let ((alist '((a . 1) (b . 2) (c . 3) (d . 4))))
(null (assoc 'z alist :test-not (complement #'eq))))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'aa alist :key #'cadr :test #'eq) (car alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'bb alist :key #'cadr :test #'eq) (cadr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'cc alist :key #'cadr :test #'eq) (caddr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'dd alist :key #'cadr :test #'eq) (cadddr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(null (assoc 'ee alist :key #'cadr :test #'eq)))
(let ((alist '(((a aa aaa)) nil ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'dd alist :key #'cadr :test #'eq) (car (cddddr alist))))
(let ((alist '(((a aa aaa)) ((b bb bbb)) nil ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'dd alist :key #'cadr :test #'eq) (car (cddddr alist))))
(let ((alist '(((a aa aaa)) nil ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc 'dd alist :key #'cadr :test #'eq) (car (cddddr alist))))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)) nil)))
(eq (assoc 'dd alist :key #'cadr :test #'eq) (cadddr alist)))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (assoc-if #'(lambda (arg) (eq arg 'y)) alist) (cadr alist)))
(null (assoc-if #'consp '((x . 100) (y . 200) (z . 50))))
(null (assoc-if #'(lambda (x) (eq x 'key)) '()))
(null (assoc-if #'identity '(())))
(null (assoc-if #'identity '(() ())))
(let ((alist '(nil nil nil (x . 100) (y . 200) (z . 50))))
(eq (assoc-if #'(lambda (arg) (eq arg 'y)) alist) (car (cddddr alist))))
(let ((alist '((1 . a) nil (2 . b) (nil))))
(eq (assoc-if #'(lambda (arg) (null arg)) alist) (cadddr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc-if #'(lambda (x) (eq x 'aa)) alist :key #'cadr) (car alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc-if #'(lambda (x) (eq x 'bb)) alist :key #'cadr) (cadr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(null (assoc-if #'(lambda (x) (eq x 'ee)) alist :key #'cadr)))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (assoc-if-not #'(lambda (arg) (not (eq arg 'y))) alist) (cadr alist)))
(null (assoc-if-not (complement #'consp) '((x . 100) (y . 200) (z . 50))))
(null (assoc-if-not #'(lambda (x) (not (eq x 'key))) '()))
(null (assoc-if-not #'identity '(())))
(null (assoc-if-not #'identity '(() ())))
(let ((alist '(nil nil nil (x . 100) (y . 200) (z . 50))))
(eq (assoc-if-not #'(lambda (arg) (not (eq arg 'y))) alist)
(car (cddddr alist))))
(let ((alist '((1 . a) nil (2 . b) (nil))))
(eq (assoc-if-not #'identity alist) (cadddr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc-if-not #'(lambda (x) (not (eq x 'aa))) alist :key #'cadr)
(car alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(eq (assoc-if-not #'(lambda (x) (not (eq x 'bb))) alist :key #'cadr)
(cadr alist)))
(let ((alist '(((a aa aaa)) ((b bb bbb)) ((c cc ccc)) ((d dd ddd)))))
(null (assoc-if-not #'(lambda (x) (not (eq x 'ee))) alist :key #'cadr)))
(equal (copy-alist '((a . 10) (b . 100) (c . 1000)))
'((a . 10) (b . 100) (c . 1000)))
(let* ((alist '((a . 10) (b . 100) (c . 1000)))
(copy (copy-alist alist)))
(and (not (eq alist copy))
(not (eq (cdr alist) (cdr copy)))
(not (eq (cddr alist) (cddr copy)))
(not (eq (car alist) (car copy)))
(not (eq (cadr alist) (cadr copy)))
(not (eq (caddr alist) (caddr copy)))))
(let* ((alist '((a 10 x) (b 100 y) (c 1000 z)))
(copy (copy-alist alist)))
(and (not (eq alist copy))
(not (eq (cdr alist) (cdr copy)))
(not (eq (cddr alist) (cddr copy)))
(not (eq (car alist) (car copy)))
(not (eq (cadr alist) (cadr copy)))
(not (eq (caddr alist) (caddr copy)))
(eq (cdar alist) (cdar copy))
(eq (cdadr alist) (cdadr copy))
(eq (cdaddr alist) (cdaddr copy))))
(let* ((alist (pairlis '(x y z) '(xx yy zz) '((a . aa) (b . bb)))))
(and (equal (assoc 'x alist) '(x . xx))
(equal (assoc 'y alist) '(y . yy))
(equal (assoc 'z alist) '(z . zz))
(equal (assoc 'a alist) '(a . aa))
(equal (assoc 'b alist) '(b . bb))
(null (assoc 'key alist))))
(let* ((alist (pairlis '(x y z) '(xx yy zz))))
(and (equal (assoc 'x alist) '(x . xx))
(equal (assoc 'y alist) '(y . yy))
(equal (assoc 'z alist) '(z . zz))
(null (assoc 'key alist))))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (rassoc '200 alist) (cadr alist)))
(null (rassoc 'no-such-datum '((x . 100) (y . 200) (z . 50))))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (rassoc '200 alist :test #'=) (cadr alist)))
(null (rassoc 'key '()))
(null (rassoc 'nil '(())))
(null (rassoc 'nil '(() ())))
(let ((alist '(nil nil nil (x . 100) (y . 200) (z . 50))))
(eq (rassoc '200 alist) (car (cddddr alist))))
(let ((alist '((1 . a) nil (2 . b) (nil))))
(eq (rassoc 'nil alist) (cadddr alist)))
(let ((alist '((x . 100) (y . 200) (x . 100) (z . 50))))
(eq (rassoc '200 alist) (cadr alist)))
(let ((alist '((a . 1) (b . 2) (c . 3) (d . 4))))
(eq (rassoc '1 alist :test-not (complement #'=)) (car alist)))
(let ((alist '((a . 1) (b . 2) (c . 3) (d . 4))))
(null (rassoc '9 alist :test-not (complement #'=))))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc 'aa alist :key #'car :test #'eq) (car alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc 'ddd alist :key #'cadr :test #'eq) (cadddr alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(null (rassoc 'eee alist :key #'cadr :test #'eq)))
(let ((alist '((a aa aaa) nil (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc 'ddd alist :key #'cadr :test #'eq) (car (cddddr alist))))
(let ((alist '((a aa aaa) (b bb bbb) nil (c cc ccc) (d dd ddd))))
(eq (rassoc 'ddd alist :key #'cadr :test #'eq) (car (cddddr alist))))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd) nil)))
(eq (rassoc 'ddd alist :key #'cadr :test #'eq) (car (cdddr alist))))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (rassoc-if #'(lambda (arg) (= arg 200)) alist) (cadr alist)))
(null (rassoc-if #'consp '((x . 100) (y . 200) (z . 50))))
(null (rassoc-if #'(lambda (x) (eq x 'key)) '()))
(null (rassoc-if #'identity '(())))
(null (rassoc-if #'identity '(() ())))
(let ((alist '(nil nil nil (x . 100) (y . 200) (z . 50))))
(eq (rassoc-if #'(lambda (arg) (= arg 200)) alist) (car (cddddr alist))))
(let ((alist '((1 . a) nil (2 . b) (nil))))
(eq (rassoc-if #'(lambda (arg) (null arg)) alist) (cadddr alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc-if #'(lambda (x) (eq x 'aaa)) alist :key #'cadr) (car alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc-if #'(lambda (x) (eq x 'bbb)) alist :key #'cadr) (cadr alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(null (rassoc-if #'(lambda (x) (eq x 'eee)) alist :key #'cadr)))
(let ((alist '((x . 100) (y . 200) (z . 50))))
(eq (rassoc-if-not #'(lambda (arg) (not (= arg 200))) alist) (cadr alist)))
(null (rassoc-if-not (complement #'consp) '((x . 100) (y . 200) (z . 50))))
(null (rassoc-if-not #'(lambda (x) (not (eq x 'key))) '()))
(null (rassoc-if-not #'identity '(())))
(null (rassoc-if-not #'identity '(() ())))
(let ((alist '(nil nil nil (x . 100) (y . 200) (z . 50))))
(eq (rassoc-if-not #'(lambda (arg) (not (= arg 200))) alist)
(car (cddddr alist))))
(let ((alist '((1 . a) nil (2 . b) (nil))))
(eq (assoc-if-not #'identity alist) (cadddr alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc-if-not #'(lambda (x) (not (eq x 'aaa))) alist :key #'cadr)
(car alist)))
(let ((alist '((a aa aaa) (b bb bbb) (c cc ccc) (d dd ddd))))
(eq (rassoc-if-not #'(lambda (x) (not (eq x 'bbb))) alist :key #'cadr)
(cadr alist)))
(let ((alist '(((a aa aaa) . 0) ((b bb bbb) . 1) ((c cc ccc) . 2))))
(eq (rassoc-if-not #'(lambda (x) (not (= x '2))) alist :key #'1+)
(cadr alist)))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(multiple-value-bind (indicator value tail)
(get-properties plist '(prop3 prop4 propX propY))
(and (eq indicator 'prop3)
(eql value 3)
(eq tail (nthcdr 4 plist)))))
(multiple-value-bind (indicator value tail)
(get-properties '(prop1 1 prop2 2 prop3 3 prop4 4)
'(propX propY propZ))
(and (eq indicator nil)
(eq value nil)
(eq tail nil)))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(multiple-value-bind (indicator value tail)
(get-properties plist '(prop1))
(and (eq indicator 'prop1)
(eql value 1)
(eq tail plist))))
(let ((plist '(prop1 1 nil nil prop2 2 prop3 3 prop4 4)))
(multiple-value-bind (indicator value tail)
(get-properties plist '(nil))
(and (eq indicator nil)
(eql value nil)
(eq tail (cddr plist)))))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(multiple-value-bind (indicator value tail)
(get-properties plist '(prop3 prop4 propX propY prop1))
(and (eq indicator 'prop1)
(eql value 1)
(eq tail plist))))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(eql (getf plist 'prop1) 1))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(eql (getf plist 'prop2) 2))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(eql (getf plist 'prop3) 3))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(eql (getf plist 'prop4) 4))
(let ((plist
'(prop1 1 prop2 2 prop3 3 prop4 4 prop1 5 prop2 6 prop3 7 prop4 8)))
(eql (getf plist 'prop1) 1))
(let ((plist
'(prop1 1 prop2 2 prop3 3 prop4 4 prop1 5 prop2 6 prop3 7 prop4 8)))
(eql (getf plist 'prop2) 2))
(let ((plist
'(prop1 1 prop2 2 prop3 3 prop4 4 prop1 5 prop2 6 prop3 7 prop4 8)))
(eql (getf plist 'prop3) 3))
(let ((plist
'(prop1 1 prop2 2 prop3 3 prop4 4 prop1 5 prop2 6 prop3 7 prop4 8)))
(eql (getf plist 'prop4) 4))
(let ((plist
'(prop1 1 prop2 2 prop3 3 prop4 4 prop1 5 prop2 6 prop3 7 prop4 8)))
(null (getf plist 'propX)))
(let ((plist '(prop1 1 prop2 2 prop3 3 prop4 4)))
(eq (getf plist 'weird-property 'not-found) 'not-found))
(let ((plist (copy-list '(prop1 1 prop2 2 prop3 3 prop4 4))))
(and (eql (setf (getf plist 'prop1) 9) 9)
(eql (getf plist 'prop1) 9)))
(let ((plist nil))
(and (eql (setf (getf plist 'prop1) 9) 9)
(eql (getf plist 'prop1) 9)))
(let ((plist '()))
(incf (getf plist 'count 0))
(eql (getf plist 'count) 1))
(let ((x (list nil)))
(and (eql (setf (getf (car x) 'prop1) 9) 9)
(eql (getf (car x) 'prop1) 9)))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (remf plist 'p2)
(eq (getf plist 'p2 'not-found) 'not-found)))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (remf plist 'p3)
(eq (getf plist 'p3 'not-found) 'not-found)))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (remf plist 'p4)
(eq (getf plist 'p4 'not-found) 'not-found)))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (null (remf plist 'pX))
(equal plist '(p1 1 p2 2 p3 3 p4 4))))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (remf plist 'p4)
(remf plist 'p2)
(remf plist 'p3)
(remf plist 'p1)
(null (remf plist 'pX))
(null (remf plist 'p1))
(null (remf plist 'p2))
(null (remf plist 'p3))
(null (remf plist 'p4))
(null plist)))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4 'p1 5 'p2 6 'p3 7 'p4 8)))
(and (remf plist 'p4)
(remf plist 'p2)
(remf plist 'p3)
(remf plist 'p1)
(null (remf plist 'pX))
(eql (getf plist 'p1) 5)
(eql (getf plist 'p2) 6)
(eql (getf plist 'p3) 7)
(eql (getf plist 'p4) 8)))
(let ((plist (list 'p1 100 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (eql (getf plist 'p1) 100)
(remf plist 'p1)
(eql (getf plist 'p1) 1)
(remf plist 'p1)
(null (getf plist 'p1))))
(let ((plist (list 'p1 1 'p2 2 'p3 3 'p4 4)))
(and (remf plist 'p4)
(null (getf plist 'p4))))
(let ((list1 (list 1 1 2 3 4 'a 'b 'c "A" "B" "C" "d"))
(list2 (list 1 4 5 'b 'c 'd "a" "B" "c" "D")))
(null (set-exclusive-or (intersection list1 list2) '(C B 4 1 1)))
(null (set-exclusive-or (intersection list1 list2 :test 'equal)
'("B" C B 4 1 1)
:test 'equal))
(null (set-exclusive-or (intersection list1 list2 :test #'equalp)
'("d" "C" "B" "A" C B 4 1 1)
:test #'equalp)))
(null (intersection '(0 1 2) '()))
(null (intersection '() '()))
(null (intersection '() '(0 1 2)))
(equal (intersection '(0) '(0)) '(0))
(equal (intersection '(0 1 2 3) '(2)) '(2))
(member 0 (intersection '(0 0 0 0 0) '(0 1 2 3 4 5)))
(null (set-exclusive-or (intersection '(0 1 2 3 4) '(4 3 2 1 0))
'(4 3 2 1 0)))
(null (set-exclusive-or (intersection '(0 1 2 3 4) '(0 1 2 3 4))
'(0 1 2 3 4)))
(null (set-exclusive-or (intersection '(0 1 2 3 4) '(4 3 2 1 0))
'(0 1 2 3 4)))
(let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
(list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
(null (set-exclusive-or (intersection list1 list2
:test #'char=
:key #'(lambda (x) (char x 0)))
'("B" "F" "h")
:test #'char=
:key #'(lambda (x) (char x 0)))))
(let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
(list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
(null (set-exclusive-or (intersection list1 list2
:test #'char-equal
:key #'(lambda (x) (char x 0)))
'("A" "B" "C" "d" "e" "F" "G" "h")
:test #'char-equal
:key #'(lambda (x) (char x 0)))))
(let ((list1 (list "A" "B" "C" "d"))
(list2 (list "D" "E" "F" "g" "h")))
(null (set-exclusive-or (intersection list1 list2
:test #'char-equal
:key #'(lambda (x) (char x 0)))
'("d")
:test #'char-equal
:key #'(lambda (x) (char x 0)))))
(let ((list1 (list 1 1 2 3 4 'a 'b 'c "A" "B" "C" "d"))
(list2 (list 1 4 5 'b 'c 'd "a" "B" "c" "D")))
(null (set-exclusive-or (nintersection (copy-list list1) list2) '(C B 4 1 1)))
(null (set-exclusive-or (nintersection (copy-list list1) list2 :test 'equal)
'("B" C B 4 1 1)
:test 'equal))
(null (set-exclusive-or (nintersection (copy-list list1) list2 :test #'equalp)
'("d" "C" "B" "A" C B 4 1 1)
:test #'equalp)))
(null (nintersection (list 0 1 2) '()))
(null (nintersection '() '()))
(null (nintersection '() '(0 1 2)))
(equal (nintersection (list 0) '(0)) '(0))
(equal (nintersection (list 0 1 2 3) '(2)) '(2))
(member 0 (nintersection (list 0 0 0 0 0) '(0 1 2 3 4 5)))
(null (set-exclusive-or (nintersection (list 0 1 2 3 4) '(4 3 2 1 0))
'(4 3 2 1 0)))
(null (set-exclusive-or (nintersection (list 0 1 2 3 4) '(0 1 2 3 4))
'(0 1 2 3 4)))
(null (set-exclusive-or (nintersection (list 0 1 2 3 4) '(4 3 2 1 0))
'(0 1 2 3 4)))
(let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
(list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
(null (set-exclusive-or (nintersection list1 list2
:test #'char=
:key #'(lambda (x) (char x 0)))
'("B" "F" "h")
:test #'char=
:key #'(lambda (x) (char x 0)))))
(let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
(list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
(null (set-exclusive-or (nintersection list1 list2
:test #'char-equal
:key #'(lambda (x) (char x 0)))
'("A" "B" "C" "d" "e" "F" "G" "h")
:test #'char-equal
:key #'(lambda (x) (char x 0)))))
(let ((list1 (list "A" "B" "C" "d"))
(list2 (list "D" "E" "F" "g" "h")))
(null (set-exclusive-or (nintersection list1 list2
:test #'char-equal
:key #'(lambda (x) (char x 0)))
'("d")
:test #'char-equal
:key #'(lambda (x) (char x 0)))))
(let ((set '(a b c)))
(eq (adjoin 'a set) set))
(let* ((set '(a b c))
(new-set (adjoin 'x set)))
(and (equal new-set '(x a b c))
(eq set (cdr new-set))))
(equal (adjoin 1 nil) '(1))
(equal (adjoin nil nil) '(nil))
(equal (adjoin nil '(nil)) '(nil))
(let ((set '((test-item 1))))
(equal (adjoin '(test-item 1) set) '((test-item 1) (test-item 1))))
(let ((set '((test-item 1))))
(equal (adjoin '(test-item 1) set)
'((test-item 1) (test-item 1))))
(let ((set '((test-item 1))))
(eq (adjoin '(test-item 1) set :test #'equal) set))
(let ((set '((test-item 1))))
(eq (adjoin '(test-item) set :key #'car) set))
(let ((set '((test-item 1))))
(eq (adjoin '(test-item) set :key #'car :test #'eq) set))
(let ((set '(("test-item" 1))))
(eq (adjoin '("test-item") set :key #'car :test #'equal) set))
(let ((set '((test-item 1))))
(eq (adjoin '(test-item 1) set :test-not (complement #'equal)) set))
(let ((set '((test-item 1))))
(eq (adjoin '(test-item) set :test-not (complement #'eql) :key #'car) set))
(let ((set '((test-item 1))))
(eq (adjoin '(test-item) set :key #'car :test-not (complement #'eq)) set))
(let ((set '(("test-item" 1))))
(eq (adjoin '("test-item") set :key #'car :test-not (complement #'equal))
set))
(let ((place nil))
(and (equal (pushnew 'a place) '(a))
(equal place '(a))))
(let ((place nil))
(and (equal (pushnew 'a place) '(a))
(equal place '(a))))
(let ((place '((a . 1) (b . 2))))
(and (equal (pushnew '(b . 2) place :test #'= :key #'cdr) '((a . 1) (b . 2)))
(equal place '((a . 1) (b . 2)))))
(let ((place '((a . 1) (b . 2))))
(and (equal (pushnew '(b . 2) place :test-not (complement #'=) :key #'cdr)
'((a . 1) (b . 2)))
(equal place '((a . 1) (b . 2)))))
(let ((place '((a . 1) (b . 2))))
(and (eq (pushnew '(z . 2) place :test #'= :key #'cdr) place)
(equal place '((a . 1) (b . 2)))))
(let ((place '((a . 1) (b . 2))))
(and (eq (pushnew '(z . 2) place :test-not (complement #'=) :key #'cdr) place)
(equal place '((a . 1) (b . 2)))))
(let ((place '("love" "peace")))
(equal (pushnew "war" place :test #'equal) '("war" "love" "peace")))
(let ((place '("love" "peace")))
(equal (pushnew "war" place :test-not (complement #'equal))
'("war" "love" "peace")))
(let ((place '("love" "peace")))
(and (eq (pushnew "peace" place :test #'equal) place)
(equal place '("love" "peace"))))
(let ((place '("love" "peace")))
(and (eq (pushnew "peace" place :test-not (complement #'equal)) place)
(equal place '("love" "peace"))))
(let ((place '(("love" . l) ("peace" . p))))
(equal (pushnew '("war" . w) place :test #'equal :key #'car)
'(("war" . w) ("love" . l) ("peace" . p))))
(let ((place '(("love" . l) ("peace" . p))))
(equal (pushnew '("war" . w) place :test-not (complement #'equal) :key #'car)
'(("war" . w) ("love" . l) ("peace" . p))))
(let ((place '(("love" . l) ("peace" . p))))
(and (eq (pushnew '("love" . l) place :test #'equal :key #'car) place)
(equal place '(("love" . l) ("peace" . p)))))
(let ((place '(("love" . l) ("peace" . p))))
(and (eq (pushnew '("love" . l) place
:test-not (complement #'equal) :key #'car) place)
(equal place '(("love" . l) ("peace" . p)))))
(let ((place '(("love" . l) ("peace" . p))))
(and (eq (pushnew '("LOVE" . L) place :test #'equalp :key #'car) place)
(equal place '(("love" . l) ("peace" . p)))))
(let ((place '(("love" . l) ("peace" . p))))
(and (eq (pushnew '("LOVE" . L) place
:test-not (complement #'equalp) :key #'car) place)
(equal place '(("love" . l) ("peace" . p)))))
(let ((place '(("love" . l) ("peace" . p))))
(equal (pushnew '("LOVE" . L) place :test #'equal :key #'car)
'(("LOVE" . L) ("love" . l) ("peace" . p))))
(let ((place '(("love" . l) ("peace" . p))))
(equal (pushnew '("LOVE" . L) place :test-not (complement #'equal) :key #'car)
'(("LOVE" . L) ("love" . l) ("peace" . p))))
(let ((list '((1) (1 2) (1 2 3))))
(and (equal (pushnew '(1) list) '((1) (1) (1 2) (1 2 3)))
(equal list '((1) (1) (1 2) (1 2 3)))))
(let* ((list '((1) (1 2) (1 2 3)))
(original list))
(and (equal (pushnew '(1) list :test #'equal) '((1) (1 2) (1 2 3)))
(eq list original)))
(let* ((list '((1) (1 2) (1 2 3)))
(original list))
(and (equal (pushnew '(1) list :test #'equal :key nil) '((1) (1 2) (1 2 3)))
(eq list original)))
(let ((list (copy-tree '(1 (2) 3 4))))
(and (equal (pushnew 4 (cadr list)) '(4 2))
(equal list '(1 (4 2) 3 4))))
(let ((list (copy-tree '(1 (2) 3 4))))
(and (equal (pushnew 4 (cadr list) :key nil) '(4 2))
(equal list '(1 (4 2) 3 4))))
(null (set-difference (set-difference '(1 2 3 4 5 6 7 8 9)
'(2 4 6 8))
'(1 3 5 7 9)))
(null (nset-difference (set-difference (list 1 2 3 4 5 6 7 8 9)
'(2 4 6 8))
'(1 3 5 7 9)))
(null (set-difference (set-difference '("1" "2" "3" "4" "5" "6" "7" "8" "9")
'("2" "4" "6" "8") :test #'equal)
'("1" "3" "5" "7" "9") :test-not (complement #'equal)))
(null (set-difference (set-difference '("1" "2" "3" "4" "5" "6" "7" "8" "9")
'("2" "4" "6" "8") :test #'equal)
'("1" "3" "5" "7" "9") :test-not (complement #'equal)))
(null (nset-difference (nset-difference
(list "1" "2" "3" "4" "5" "6" "7" "8" "9")
'("2" "4" "6" "8") :test #'equal)
'("1" "3" "5" "7" "9") :test-not (complement #'equal)))
(null (set-difference (set-difference '(("love") ("hate") ("peace") ("war"))
'(("love") ("peace"))
:key #'car
:test #'equal)
'(("hate") ("war"))
:key #'car
:test-not (complement #'equal)))
(null (nset-difference (nset-difference
(list '("love") '("hate") '("peace") '("war"))
'(("love") ("peace"))
:key #'car
:test #'equal)
'(("hate") ("war"))
:key #'car
:test-not (complement #'equal)))
(null (set-difference '() '()))
(null (set-difference '() '() :test #'equal :key 'identity))
(null (nset-difference '() '()))
(null (set-difference '() '(1 2 3)))
(null (set-difference '() '(1 2 3) :test #'equal :key 'identity))
(null (nset-difference '() '(1 2 3)))
(null (set-difference '(1 2 3 4) '(4 3 2 1)))
(null (nset-difference (list 1 2 3 4) '(4 3 2 1)))
(null (set-difference '(1 2 3 4) '(2 4 3 1)))
(null (nset-difference (list 1 2 3 4) '(2 4 3 1)))
(null (set-difference '(1 2 3 4) '(1 3 4 2)))
(null (nset-difference (list 1 2 3 4) '(1 3 4 2)))
(null (set-difference '(1 2 3 4) '(1 3 2 4)))
(null (nset-difference (list 1 2 3 4) '(1 3 2 4)))
(eq (set-difference (set-difference '(1 2 3) '())
'(1 2 3))
'())
(eq (nset-difference (nset-difference (list 1 2 3) '())
'(1 2 3))
'())
(eq (set-difference (set-difference '(1 2 3) '(1))
'(2 3))
'())
(eq (nset-difference (nset-difference (list 1 2 3) '(1))
'(2 3))
'())
(eq (set-difference (set-difference '(1 2 3) '(1 2))
'(3))
'())
(eq (nset-difference (nset-difference (list 1 2 3) '(1 2))
'(3))
'())
(null (set-exclusive-or (set-exclusive-or '(1 2 3) '(2 3 4))
'(1 4)))
(null (nset-exclusive-or (nset-exclusive-or (list 1 2 3) '(2 3 4))
'(1 4)))
(null (set-exclusive-or (set-exclusive-or '(1 2 3) '(1 3))
'(2)))
(null (nset-exclusive-or (nset-exclusive-or (list 1 2 3) '(1 3))
'(2)))
(null (set-exclusive-or '() '()))
(null (nset-exclusive-or '() '()))
(null (set-exclusive-or '(1 2 3) '(3 2 1)))
(null (nset-exclusive-or (list 1 2 3) '(3 2 1)))
(null (set-exclusive-or '(1 2 3) '(2 3 1)))
(null (nset-exclusive-or (list 1 2 3) '(2 3 1)))
(null (set-exclusive-or '(1 2 3) '(1 3 2)))
(null (nset-exclusive-or (list 1 2 3) '(1 3 2)))
(null (set-exclusive-or (set-exclusive-or '(1 2 3) '())
'(3 2 1)))
(null (nset-exclusive-or (nset-exclusive-or (list 1 2 3) '())
'(3 2 1)))
(null (set-exclusive-or (set-exclusive-or '() '(1 2 3))
'(2 1 3)))
(null (nset-exclusive-or (nset-exclusive-or '() '(1 2 3))
'(2 1 3)))
(null (set-exclusive-or '("car" "ship" "airplane" "submarine")
'("car" "ship" "airplane" "submarine")
:test #'equal))
(null (nset-exclusive-or (copy-list '("car" "ship" "airplane" "submarine"))
'("car" "ship" "airplane" "submarine")
:test #'equal))
(null (set-exclusive-or '("car" "ship" "airplane" "submarine")
'("CAR" "SHIP" "AIRPLANE" "SUBMARINE")
:test #'equalp))
(null (nset-exclusive-or (copy-list '("car" "ship" "airplane" "submarine"))
'("CAR" "SHIP" "AIRPLANE" "SUBMARINE")
:test #'equalp))
(null (set-exclusive-or '("car" "ship" "airplane" "submarine")
'("ship" "airplane" "submarine" "car")
:test-not (complement #'equal)))
(null (nset-exclusive-or (copy-list '("car" "ship" "airplane" "submarine"))
'("ship" "airplane" "submarine" "car")
:test-not (complement #'equal)))
(null (set-exclusive-or '(("car") ("ship") ("airplane") ("submarine"))
'(("car") ("ship") ("airplane") ("submarine"))
:test #'string=
:key #'car))
(null (nset-exclusive-or (copy-tree
'(("car") ("ship") ("airplane") ("submarine")))
'(("car") ("ship") ("airplane") ("submarine"))
:test #'string=
:key #'car))
(null (set-exclusive-or '(("car") ("ship") ("airplane") ("submarine"))
'(("car") ("ship") ("airplane") ("submarine"))
:test-not (complement #'string=)
:key #'car))
(null (nset-exclusive-or (copy-tree
'(("car") ("ship") ("airplane") ("submarine")))
'(("car") ("ship") ("airplane") ("submarine"))
:test-not (complement #'string=)
:key #'car))
(null (set-exclusive-or
(set-exclusive-or '("car" "ship" "airplane" "submarine")
'("car" "ship" "horse" "airplane" "submarine" "camel")
:test #'equal)
'("camel" "horse")
:test-not (complement #'equal)))
(null (nset-exclusive-or
(nset-exclusive-or (list "car" "ship" "airplane" "submarine")
'("car" "ship" "horse" "airplane" "submarine" "camel")
:test #'equal)
'("camel" "horse")
:test-not (complement #'equal)))
(subsetp '(1 2 3) '(1 2 3))
(subsetp '(1 2 3) '(3 2 1))
(subsetp '(1 2 3) '(2 1 3))
(null (subsetp '(1 2 3 4) '(2 1 3)))
(subsetp '(1) '(2 1 3))
(subsetp '(1 2) '(1 2 3 4 5 6 7 8))
(subsetp '(1 2 3 4 5) '(8 7 6 5 4 3 2 1))
(null (subsetp '("car" "ship" "airplane" "submarine")
'("car" "ship" "horse" "airplane" "submarine" "camel")))
(subsetp '("car" "ship" "airplane" "submarine")
'("car" "ship" "horse" "airplane" "submarine" "camel")
:test #'equal)
(subsetp '("CAR" "SHIP" "AIRPLANE" "SUBMARINE")
'("car" "ship" "horse" "airplane" "submarine" "camel")
:test #'equalp)
(subsetp '(("car") ("ship") ("airplane") ("submarine"))
'(("car") ("ship") ("horse") ("airplane") ("submarine") ("camel"))
:test #'string=
:key #'car)
(null (union '() '()))
(null (nunion '() '()))
(null (set-difference (union '(1 2 3) '(2 3 4))
'(1 2 3 4)))
(null (set-difference (nunion (list 1 2 3) (list 2 3 4))
'(1 2 3 4)))
(null (set-difference (union '(1 2 3) '(1 2 3))
'(1 2 3)))
(null (set-difference (nunion (list 1 2 3) (list 1 2 3))
'(1 2 3)))
(null (set-difference (union '(1) '(3 2 1))
'(1 2 3)))
(null (set-difference (nunion (list 1) (list 3 2 1))
'(1 2 3)))
(null (set-difference (union '(1 2 3) '())
'(1 2 3)))
(null (set-difference (nunion (list 1 2 3) '())
'(1 2 3)))
(null (set-difference (union '() '(1 2 3))
'(1 2 3)))
(null (set-difference (nunion '() (list 1 2 3))
'(1 2 3)))
(null (set-difference (union '(1 2 3) '(2))
'(1 2 3)))
(null (set-difference (nunion (list 1 2 3) (list 2))
'(1 2 3)))
(null (set-difference (union '("Alpha" "Bravo" "Charlie")
'("Bravo" "Charlie" "Delta" "Echo")
:test #'string=)
'("Alpha" "Bravo" "Charlie" "Delta" "Echo")
:test-not (complement #'string=)))
(null (set-difference (nunion (list "Alpha" "Bravo" "Charlie")
(list "Bravo" "Charlie" "Delta" "Echo")
:test #'string=)
'("Alpha" "Bravo" "Charlie" "Delta" "Echo")
:test-not (complement #'string=)))
(null (set-difference
(union (copy-tree '(("Alpha") ("Bravo") ("Charlie")))
(copy-tree '(("Bravo") ("Charlie") ("Delta") ("Echo")))
:test #'string=
:key #'car)
'(("Alpha") ("Bravo") ("Charlie") ("Delta") ("Echo"))
:test-not (complement #'string=)
:key #'car))
(null (set-difference
(nunion (copy-tree '(("Alpha") ("Bravo") ("Charlie")))
(copy-tree '(("Bravo") ("Charlie") ("Delta") ("Echo")))
:test #'string=
:key #'car)
'(("Alpha") ("Bravo") ("Charlie") ("Delta") ("Echo"))
:test-not (complement #'string=)
:key #'car))
(null (set-difference (union '("Alpha" "Bravo" "Charlie")
'("BRAVO" "CHARLIE" "DELTA" "ECHO")
:test #'string-equal)
'("ALPHA" "BRAVO" "CHARLIE" "DELTA" "ECHO")
:test-not (complement #'string-equal)))