[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#57548: Add new function `seq-positions'
From: |
Michael Heerdegen |
Subject: |
bug#57548: Add new function `seq-positions' |
Date: |
Sat, 03 Sep 2022 03:42:02 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
Damien Cassou <damien@cassou.me> writes:
> here is a patch adding seq-positions to seq.el.
+@defun seq-positions sequence elt &optional testfn
+ This function returns a list of the positions of the elements in
+@var{sequence} that are equal to @var{elt}. If the optional argument
+@var{testfn} is non-@code{nil}, it is a function of two arguments to
+use instead of the default @code{equal}.
We do not need to limit this to equivalence relations. A TESTFUN of, say,
(apply-partially #'<= 10) could be similarly useful.
+;;;###autoload
+(cl-defgeneric seq-positions (sequence elt &optional testfn)
+ "Return a list of the positions of ELT in SEQ.
+Equality is defined by TESTFN if non-nil or by `equal' if nil."
+ (let ((result '())
+ (index 0))
+ (seq-doseq (e sequence)
+ (when (funcall (or testfn #'equal) e elt)
+ (push index result))
+ (setq index (1+ index)))
+ (nreverse result)))
Could this maybe (simpler) call `seq-do-indexed'?
TIA,
Michael.
- bug#57548: Add new function `seq-positions', Damien Cassou, 2022/09/02
- bug#57548: Add new function `seq-positions', Eli Zaretskii, 2022/09/02
- bug#57548: Add new function `seq-positions', Damien Cassou, 2022/09/03
- bug#57548: Add new function `seq-positions', Michael Heerdegen, 2022/09/03
- bug#57548: Add new function `seq-positions', Damien Cassou, 2022/09/04
- bug#57548: Add new function `seq-positions', Lars Ingebrigtsen, 2022/09/04
- bug#57548: Add new function `seq-positions', Michael Heerdegen, 2022/09/05
bug#57548: Add new function `seq-positions',
Michael Heerdegen <=