aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/emacs-lisp/seq.el25
1 files changed, 14 insertions, 11 deletions
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 832a49d7845..d85c7297ee0 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -463,22 +463,25 @@ whether an element was found or not."
463;; (t 463;; (t
464;; (cl-call-next-method)))) 464;; (cl-call-next-method))))
465 465
466(cl-defgeneric seq-contains-pred (sequence &optional testfn) 466(cl-defgeneric seq-contains-pred (_sequence &optional testfn)
467 (lambda (elt sequence)
468 (catch 'seq--break
469 (seq-doseq (e sequence)
470 (let ((r (funcall testfn e elt)))
471 (when r
472 (throw 'seq--break r))))
473 nil)))
474
475(cl-defmethod seq-contains-pred ((_sequence list) &optional testfn)
467 (cond 476 (cond
468 ((and (listp sequence) (or (null testfn) (eq testfn 'equal))) 477 ((or (null testfn) (eq testfn 'equal))
469 #'member) 478 #'member)
470 ((and (listp sequence) (eq testfn 'eql)) 479 ((eq testfn 'eql)
471 #'memql) 480 #'memql)
472 ((and (listp sequence) (eq testfn 'eq)) 481 ((eq testfn 'eq)
473 #'memq) 482 #'memq)
474 (t 483 (t
475 (lambda (elt sequence) 484 (cl-call-next-method))))
476 (catch 'seq--break
477 (seq-doseq (e sequence)
478 (let ((r (funcall testfn e elt)))
479 (when r
480 (throw 'seq--break r))))
481 nil)))))
482 485
483(cl-defgeneric seq-set-equal-p (sequence1 sequence2 &optional testfn) 486(cl-defgeneric seq-set-equal-p (sequence1 sequence2 &optional testfn)
484 "Return non-nil if SEQUENCE1 and SEQUENCE2 contain the same elements. 487 "Return non-nil if SEQUENCE1 and SEQUENCE2 contain the same elements.