]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/seq/seq-25.el
Merge commit '3659f0267f1a70a7141b7d53d8a0696d40247c08'
[gnu-emacs-elpa] / packages / seq / seq-25.el
index 74153f317426a1b93dd9a7d46451e9553588d122..b6cdb061c47501b9c8346c20856a675a4e90f6a9 100644 (file)
@@ -61,7 +61,7 @@
 (seq--when-emacs-25-p
 
 (require 'cl-generic)
-(require 'cl-extra) ;; for cl-subseq
+(require 'cl-lib) ;; for cl-subseq
 
 (defmacro seq-doseq (spec &rest body)
   "Loop over a sequence.
@@ -218,6 +218,16 @@ The result is a sequence of the same type as SEQUENCE."
   (let ((result (seq-sort pred (append sequence nil))))
     (seq-into result (type-of sequence))))
 
+(defun seq-sort-by (function pred sequence)
+  "Sort SEQUENCE using PRED as a comparison function.
+Elements of SEQUENCE are transformed by FUNCTION before being
+sorted.  FUNCTION must be a function of one argument."
+  (seq-sort (lambda (a b)
+              (funcall pred
+                       (funcall function a)
+                       (funcall function b)))
+            sequence))
+
 (cl-defmethod seq-sort (pred (list list))
   (sort (seq-copy list) pred))