summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorNicolas Petton <nicolas@petton.fr>2016-02-14 10:25:10 +0100
committerNicolas Petton <nicolas@petton.fr>2016-02-14 10:25:10 +0100
commit30fe90fa3c8f814a30a5136089b995b0a26f5cd0 (patch)
tree6854e323308d2e2790119ffb47d9d97ec8a2a056 /lisp/emacs-lisp
parentd9bf0c1c6a6ce90aa2edbb911fb58b26975d423b (diff)
downloademacs-30fe90fa3c8f814a30a5136089b995b0a26f5cd0.tar.gz
emacs-30fe90fa3c8f814a30a5136089b995b0a26f5cd0.tar.bz2
emacs-30fe90fa3c8f814a30a5136089b995b0a26f5cd0.zip
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.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/seq.el12
1 files changed, 12 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 300fe5cd1fd..8b7b594f5e1 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -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))