union and nunion return a list
that contains every element that occurs in either list-1
or list-2.
For all possible ordered pairs consisting of one
element from list-1
and one element from list-2, :test or :test-not is used
to determine whether they satisfy the test.
The first argument to the :test or :test-not
function is the part of the element of list-1 extracted by the
:key function (if supplied); the second argument
is the part of the element of list-2 extracted by the
:key function (if supplied).
The argument to the :key function is an element of
list-1 or list-2; the return value is part of the supplied
element.
If :key is not supplied or nil,
the element of list-1 or list-2
itself is supplied to the :test or :test-not function.
For every matching pair,
one of the two elements of the pair will be in the result. Any
element from either list-1 or list-2
that matches no element of the other will appear
in the result.
If there is a duplication between list-1
and list-2,
only one of the duplicate instances will be in the result.
If either list-1
or list-2 has duplicate entries within it,
the redundant entries
might or might not appear in the result.
The order of elements in the result do not have to
reflect the ordering of list-1 or list-2 in any way.
The result list may be eq to either
list-1 or list-2 if appropriate.