mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-20 10:23:57 +00:00
New function seq-map-indexed
* lisp/emacs-lisp/seq.el (seq-map-indexed): New function. * test/lisp/emacs-lisp/seq-tests.el: Add tests for seq-map-indexed.
This commit is contained in:
parent
d9bf0c1c6a
commit
30fe90fa3c
@ -144,6 +144,18 @@ if positive or too small if negative)."
|
||||
sequence)
|
||||
(nreverse result)))
|
||||
|
||||
(defun seq-map-indexed (function sequence)
|
||||
"Return the result of applying FUNCTION to each element of SEQUENCE.
|
||||
Unlike `seq-map', FUNCTION takes two arguments: the element of
|
||||
the sequence, and its index within the sequence."
|
||||
(let ((index 0))
|
||||
(seq-map (lambda (elt)
|
||||
(prog1
|
||||
(funcall function elt index)
|
||||
(setq index (1+ index))))
|
||||
sequence)))
|
||||
|
||||
|
||||
;; faster implementation for sequences (sequencep)
|
||||
(cl-defmethod seq-map (function (sequence sequence))
|
||||
(mapcar function sequence))
|
||||
|
@ -97,6 +97,16 @@ Evaluate BODY for each created sequence.
|
||||
(with-test-sequences (seq '())
|
||||
(should (seq-empty-p (seq-take-while #'test-sequences-oddp seq)))))
|
||||
|
||||
(ert-deftest test-seq-map-indexed ()
|
||||
(should (equal (seq-map-indexed (lambda (elt i)
|
||||
(list elt i))
|
||||
nil)
|
||||
nil))
|
||||
(should (equal (seq-map-indexed (lambda (elt i)
|
||||
(list elt i))
|
||||
'(a b c d))
|
||||
'((a 0) (b 1) (c 2) (d 3)))))
|
||||
|
||||
(ert-deftest test-seq-filter ()
|
||||
(with-test-sequences (seq '(6 7 8 9 10))
|
||||
(should (equal (seq-filter #'test-sequences-evenp seq) '(6 8 10)))
|
||||
|
Loading…
Reference in New Issue
Block a user