aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Petton2015-08-23 21:09:01 +0200
committerNicolas Petton2015-08-23 21:14:09 +0200
commitc13a4df51ca2b82c03ef13bca1151f727cfc64f6 (patch)
tree574ccf4cb23866b2b86bab10b0c1273716966a29
parent20aa61c0a3c152e5b829d02ea20a4d89c692b91b (diff)
downloademacs-c13a4df51ca2b82c03ef13bca1151f727cfc64f6.tar.gz
emacs-c13a4df51ca2b82c03ef13bca1151f727cfc64f6.zip
Remove the calls to `seq-into` from `seq-concatenate`
Since most new types of seq would have to be defined as sequences (cons cells or CL structs, mostly), there is no need to convert the seqs to sequences (which can be a fairly expensive operation). * lisp/emacs-lisp/seq.el (seq-concatenate): Do not ensure that seqs are sequences.
-rw-r--r--lisp/emacs-lisp/seq.el17
1 files changed, 5 insertions, 12 deletions
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index f9e0e9c0fa8..5ce4d91ec3e 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -200,18 +200,11 @@ The result is a sequence of the same type as SEQ."
200TYPE must be one of following symbols: vector, string or list. 200TYPE must be one of following symbols: vector, string or list.
201 201
202\n(fn TYPE SEQUENCE...)" 202\n(fn TYPE SEQUENCE...)"
203 ;; Since new seq types might be defined, we need to make sure that 203 (pcase type
204 ;; all seqs are actual sequences. 204 (`vector (apply #'vconcat seqs))
205 (let ((sequences (seq-map (lambda (s) 205 (`string (apply #'concat seqs))
206 (if (sequencep s) 206 (`list (apply #'append (append seqs '(nil))))
207 s 207 (_ (error "Not a sequence type name: %S" type))))
208 (seq-into s 'list)))
209 seqs)))
210 (pcase type
211 (`vector (apply #'vconcat sequences))
212 (`string (apply #'concat sequences))
213 (`list (apply #'append (append sequences '(nil))))
214 (_ (error "Not a sequence type name: %S" type)))))
215 208
216(cl-defgeneric seq-into (seq type) 209(cl-defgeneric seq-into (seq type)
217 "Convert the sequence SEQ into a sequence of type TYPE. 210 "Convert the sequence SEQ into a sequence of type TYPE.