concatenate est un alias pour 'cl-concatenate' dans 'cl.el'.
(concaténer la SÉQUENCE DE TYPE ...)
Concatène, dans une séquence de type TYPE, l'argument SEQUENCEs.
Donc pour votre exemple
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
Puisqu'il est défini dans cl
vous devrez peut-être d' (require 'cl)
abord, sinon vous pouvez utiliser cl-concatenate
ce qui semble être chargé par défaut.
De plus, comme souligné par @phils, il cl-concatenate
suffit d'appeler append
lorsque TYPE est 'list
, voici la source de 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))))
Donc, si vous n'utilisez que des listes, il est plus simple d'utiliser directement append
, comme l'a souligné @John Kitchin.
Enfin, @lawlist a mentionné nconc
:
nconc est une fonction intégrée dans le «code source C».
(LISTES nconc & rest)
Concatène n'importe quel nombre de listes en les modifiant. Seul le dernier argument n'est pas modifié et n'a pas besoin d'être une liste.
Qu'est-ce que cela signifie:
(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")