Function: cl-set-exclusive-or
cl-set-exclusive-or is an autoloaded and byte-compiled function
defined in cl-seq.el.gz.
Signature
(cl-set-exclusive-or LIST1 LIST2 [KEYWORD VALUE]...)
Documentation
Combine LIST1 and LIST2 using a set-exclusive-or operation.
The resulting list contains all items appearing in exactly one of LIST1, LIST2. This is a non-destructive function; it makes a copy of the data if necessary to avoid corrupting the original LIST1 and LIST2.
Keywords supported: :test :test-not :key
Aliases
set-exclusive-or (obsolete since 27.1)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/cl-seq.el.gz
;;;###autoload
(defun cl-set-exclusive-or (list1 list2 &rest cl-keys)
"Combine LIST1 and LIST2 using a set-exclusive-or operation.
The resulting list contains all items appearing in exactly one of LIST1, LIST2.
This is a non-destructive function; it makes a copy of the data if necessary
to avoid corrupting the original LIST1 and LIST2.
\nKeywords supported: :test :test-not :key
\n(fn LIST1 LIST2 [KEYWORD VALUE]...)"
(declare (important-return-value t))
(cond ((null list1) list2) ((null list2) list1)
((equal list1 list2) nil)
(t (append (apply #'cl-set-difference list1 list2 cl-keys)
(apply #'cl-set-difference list2 list1 cl-keys)))))