concatenate - псевдонім для 'cl-concatenate' у 'cl.el'.
(об'єднати послідовність ТИПУ ...)
Об'єднайте в послідовність типу TYPE аргумент SEQUENCE.
Тож для вашого прикладу
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
Оскільки це визначено у cl
вас, можливо, доведеться (require 'cl)
спочатку, інакше ви можете використовувати те, cl-concatenate
що здається завантажене за замовчуванням.
Також, як зазначає @phils, cl-concatenate
просто дзвонить, append
коли TYPE є 'list
, ось джерело з cl-extra.el
:
(defun cl-concatenate (type &rest sequences)
"Concatenate, into a sequence of type TYPE, the argument SEQUENCEs.
\n(fn TYPE SEQUENCE...)"
(pcase type
(`vector (apply #'vconcat sequences))
(`string (apply #'concat sequences))
(`list (apply #'append (append sequences '(nil))))
(_ (error "Not a sequence type name: %S" type))))
Тож якщо ви використовуєте лише списки, це простіше безпосередньо використовувати append
, як вказував @John Kitchin.
Нарешті, @lawlist згадав nconc
:
nconc - це вбудована функція у "C вихідному коді".
(списки nconc та решта)
Об’єднайте будь-яку кількість списків, змінивши їх. Тільки останній аргумент не змінюється, і його список не повинен бути.
Що це означає:
(nconc '("a" "b" "c") '("d" "e" "f"))
=> ("a" "b" "c" "d" "e" "f")
(setq l1 '("a" "b" "c")
l2 '("d" "e" "f"))
(nconc l1 l2)
=> ("a" "b" "c" "d" "e" "f")
l1
=> ("a" "b" "c" "d" "e" "f")
l2
=> ("d" "e" "f")