aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorDamien Cassou2017-04-17 11:01:39 +0200
committerNicolas Petton2017-05-04 11:32:58 +0200
commit88f96e69cfcd265f2ef0db3e134ac9e29e64ec3e (patch)
treecdf11ece3a34f982ba3bf28bd8f90d659fdc41b1 /lisp
parent250d24fa7333046fb187cf4f544dc4358f16e2df (diff)
downloademacs-88f96e69cfcd265f2ef0db3e134ac9e29e64ec3e.tar.gz
emacs-88f96e69cfcd265f2ef0db3e134ac9e29e64ec3e.zip
Add seq-set-equal-p to test for set equality
* lisp/emacs-lisp/seq.el (seq-set-equal-p): Add function to compare two lists as if they were sets. * test/lisp/emacs-lisp/seq-tests.el (test-seq-set-equal-p): Add test for seq-set-equal-p.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emacs-lisp/seq.el6
1 files changed, 6 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 10de2484798..963a1ddf964 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -355,6 +355,12 @@ Equality is defined by TESTFN if non-nil or by `equal' if nil."
355 e)) 355 e))
356 sequence)) 356 sequence))
357 357
358(cl-defgeneric seq-set-equal-p (sequence1 sequence2 &optional testfn)
359 "Return non-nil if SEQUENCE1 and SEQUENCE2 contain the same elements, regardless of order.
360Equality is defined by TESTFN if non-nil or by `equal' if nil."
361 (and (seq-every-p (lambda (item1) (seq-contains sequence2 item1 testfn)) sequence1)
362 (seq-every-p (lambda (item2) (seq-contains sequence1 item2 testfn)) sequence2)))
363
358(cl-defgeneric seq-position (sequence elt &optional testfn) 364(cl-defgeneric seq-position (sequence elt &optional testfn)
359 "Return the index of the first element in SEQUENCE that is equal to ELT. 365 "Return the index of the first element in SEQUENCE that is equal to ELT.
360Equality is defined by TESTFN if non-nil or by `equal' if nil." 366Equality is defined by TESTFN if non-nil or by `equal' if nil."