;;; seq-24.el --- seq.el implementation for Emacs 24.x -*- lexical-binding: t -*-
-;; Copyright (C) 2014-2015 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2016 Free Software Foundation, Inc.
;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: sequences
(let ((result (seq-sort predicate (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))
+
(defun seq-contains (sequence elt &optional testfn)
"Return the first element in SEQUENCE that equals to ELT.
Equality is defined by TESTFN if non-nil or by `equal' if nil."
(`vector (apply #'vconcat seqs))
(`string (apply #'concat seqs))
(`list (apply #'append (append seqs '(nil))))
- (t (error "Not a sequence type name: %S" type))))
+ (_ (error "Not a sequence type name: %S" type))))
(defun seq-mapcat (function sequence &optional type)
"Concatenate the result of applying FUNCTION to each element of SEQUENCE.
(`vector (vconcat sequence))
(`string (concat sequence))
(`list (append sequence nil))
- (t (error "Not a sequence type name: %S" type))))
+ (_ (error "Not a sequence type name: %S" type))))
(defun seq-min (sequence)
"Return the smallest element of SEQUENCE.
(seq-drop ,sequence ,index))
bindings)
(setq rest-marker t)))
- (t
+ (_
(push `(,name (seq--elt-safe ,sequence ,index)) bindings))))
(setq index (1+ index)))
bindings))