set-difference returns a list 
of elements of list-1
that do not appear in list-2.  
nset-difference is the destructive 
version of set-difference.
It may destroy list-1.
For all possible ordered pairs consisting of
one element from list-1 and one element from list-2, the 
:test or :test-not function is
used to determine whether they satisfy the test.  
The first argument to the :test or :test-not function 
is the part of an element of list-1 that is returned by 
the :key function (if supplied); the second argument is the part of 
an element of list-2 that is 
returned by the :key function (if supplied).
If :key is supplied, its argument is a list-1 or
list-2 element. The :key function 
typically returns part of 
the supplied element.
If :key is not supplied, the list-1 or list-2
element is used.
An element of list-1
appears in the result if and only if it does not match any element
of list-2.  
There is no guarantee that the order of elements in the result will
reflect the ordering of the arguments in any particular way.
The result list 
may share cells with, or be eq to, either of list-1
or list-2,
if appropriate.