Improve seq-concatenate for new sequence types
Use the new `seq-into-sequence' in seqs passed to `seq-concatenate' to ensure that concatenation happens on sequences only. This makes it possible to use `seq-concatenate' for new types of seqs. * lisp/emacs-lisp/seq.el (seq-into-sequence, seq-concatenate): New function used in `seq-concatenate'. * test/automated/seq-tests.el (test-seq-into-sequence): New unit test for seq-into-sequence.
This commit is contained in:
parent
64fbdc9825
commit
259a643d7f
2 changed files with 17 additions and 1 deletions
|
@ -48,6 +48,7 @@
|
|||
;; - `seq-do'
|
||||
;; - `seq-p'
|
||||
;; - `seq-subseq'
|
||||
;; - `seq-into-sequence'
|
||||
;; - `seq-copy'
|
||||
;; - `seq-into'
|
||||
;;
|
||||
|
@ -200,7 +201,17 @@ The result is a sequence of the same type as SEQ."
|
|||
TYPE must be one of following symbols: vector, string or list.
|
||||
|
||||
\n(fn TYPE SEQUENCE...)"
|
||||
(apply #'cl-concatenate type seqs))
|
||||
(apply #'cl-concatenate type (seq-map #'seq-into-sequence seqs)))
|
||||
|
||||
(cl-defgeneric seq-into-sequence (seq)
|
||||
"Convert SEQ into a sequence.
|
||||
|
||||
The default implementation is to signal an error if SEQ is not a
|
||||
sequence, specific functions should be implemented for new types
|
||||
of seq."
|
||||
(unless (sequencep seq)
|
||||
(error "Cannot convert %S into a sequence" seq))
|
||||
seq)
|
||||
|
||||
(cl-defgeneric seq-into (seq type)
|
||||
"Convert the sequence SEQ into a sequence of type TYPE.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue