Add new function `seq-positions'
* doc/lispref/sequences.texi (Sequence Functions): Document it. * lisp/emacs-lisp/seq.el (seq-positions): New function. * lisp/emacs-lisp/shortdoc.el (sequence): Mention it. * test/lisp/emacs-lisp/seq-tests.el (test-seq-positions): Test it (bug#57548).
This commit is contained in:
parent
4d50d413e6
commit
4751b51d5e
5 changed files with 54 additions and 0 deletions
|
@ -459,6 +459,23 @@ Equality is defined by the function TESTFN, which defaults to `equal'."
|
|||
(setq index (1+ index)))
|
||||
nil)))
|
||||
|
||||
;;;###autoload
|
||||
(cl-defgeneric seq-positions (sequence elt &optional testfn)
|
||||
"Return indices for which (TESTFN (seq-elt SEQUENCE index) ELT) is non-nil.
|
||||
|
||||
TESTFN is a two-argument function which is passed each element of
|
||||
SEQUENCE as first argument and ELT as second. TESTFN defaults to
|
||||
`equal'.
|
||||
|
||||
The result is a list of (zero-based) indices."
|
||||
(let ((result '()))
|
||||
(seq-do-indexed
|
||||
(lambda (e index)
|
||||
(when (funcall (or testfn #'equal) e elt)
|
||||
(push index result)))
|
||||
sequence)
|
||||
(nreverse result)))
|
||||
|
||||
;;;###autoload
|
||||
(cl-defgeneric seq-uniq (sequence &optional testfn)
|
||||
"Return a list of the elements of SEQUENCE with duplicates removed.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue