Elisp: Sequence. Union, Intersection, Difference

By Xah Lee. Date: .

Union, Intersection, Difference

seq-union

(seq-union SEQUENCE1 SEQUENCE2 &optional TESTFN)

union of sequences.

equality is defined by the function TESTFN. default to equal

(seq-union [3 4 5] [4 2 3])
;; (3 4 5 2)
seq-intersection

(seq-intersection SEQUENCE1 SEQUENCE2 &optional TESTFN)

return a list of intersection of sequences.

(seq-intersection [3 4 5] [4 2 3])
;; (3 4)

(seq-intersection [3 4 5] '(4 2 3))
;; (3 4)

;; default comparison is equal, which does not equate 3 with 3.0
(seq-intersection [3 4 5] [4 2 3.0])
;; (4)

;; specify a comparison function
(seq-intersection [3 4 5] [4 2 3.0] '=)
;; (3 4)
seq-difference

(seq-difference SEQUENCE1 SEQUENCE2 &optional TESTFN)

(seq-difference [3 4 5 6] [5 4])
;; (3 6)

(seq-difference [3 4 5 6] '(5 4))
;; (3 6)

Equality, Sequence as Set

seq-set-equal-p

(seq-set-equal-p SEQUENCE1 SEQUENCE2 &optional TESTFN)

(seq-set-equal-p [3 4 5] '(3 4 5))
;; t

(seq-set-equal-p [3 4 5] [3 4])
;; nil

Emacs Lisp, sequence functions