When an object O is being considered iteratively 
against each element E_i
of a sequence S
by an operator F listed in Figure 17–2,
it is sometimes useful to control the way in which the presence of O 
is tested in S is tested by F.
This control is offered on the basis of a function designated with 
either a :test or :test-not argument.
| adjoin | nset-exclusive-or | search | 
| assoc | nsublis | set-difference | 
| count | nsubst | set-exclusive-or | 
| delete | nsubstitute | sublis | 
| find | nunion | subsetp | 
| intersection | position | subst | 
| member | pushnew | substitute | 
| mismatch | rassoc | tree-equal | 
| nintersection | remove | union | 
| nset-difference | remove-duplicates | 
The object O might not be compared directly to E_i.
If a :key argument is provided,
it is a designator for a function of one argument 
to be called with each E_i as an argument, 
and yielding an object Z_i to be used for comparison.
(If there is no :key argument, Z_i is E_i.)
The function designated by the :key argument is never called on O itself.
However, if the function operates on multiple sequences
(e.g., as happens in set-difference), O
will be the result of calling the :key function on an
element of the other sequence.  
A :test argument, if supplied to F,
is a designator for a  function
of two arguments, O and Z_i.
An E_i is said (or, sometimes, an O and an E_i are said)
to satisfy the test if this :test function returns a generalized boolean representing 
true.
A :test-not argument, if supplied to F, 
is designator for a function 
of two arguments, O and Z_i.
An E_i is said (or, sometimes, an O and an E_i are said)
to satisfy the test if this :test-not function
returns a generalized boolean representing false.
If neither a :test nor a :test-not argument is supplied, 
it is as if a :test argument of #'eql was supplied.
The consequences are unspecified if both a :test and a :test-not argument
are supplied in the same call to F.
| Examples of Satisfying a Two-Argument Test |