Add-to-set
Add a symbol to a list
General Forms:
(add-to-set x lst)
(add-to-set x lst :test 'eql) ; same as above (eql as equality test)
(add-to-set x lst :test 'eq) ; same, but eq is equality test
(add-to-set x lst :test 'equal) ; same, but equal is equality test
For a symbol x and an object lst, (add-to-set-eq x lst) is
the result of consing x on to the front of lst, unless
x is already a member of lst, in which case the result is
lst. The optional keyword, :TEST, has no effect logically, but
provides the test (default eql) used for comparing x with
successive elements of lst.
The guard for a call of add-to-set depends on the test. In all
cases, the second argument must satisfy true-listp. If the test is
eql, then either the first argument must be suitable for eql
(see eqlablep) or the second argument must satisfy eqlable-listp. If the test is eq, then either the first argument
must be a symbol or the second argument must satisfy symbol-listp.
See equality-variants for a discussion of the relation between
add-to-set and its variants:
(add-to-set-eq x lst) is equivalent to (add-to-set x
lst :test 'eq);
(add-to-set-equal x lst) is equivalent to (add-to-set x lst :test
'equal).
In particular, reasoning about any of these primitives reduces to reasoning
about the function add-to-set-equal.
Subtopics
- Std/lists/add-to-set
- Theorems about the built-in function add-to-set.