concat
で問題ないような気がします。
lisp
1(concat "hoge" "fuga" "piyo")
2=> "hogefugapiyo" ;; 引数3つでも連結できている
なので以下は不要かもですが念のため。
可変長引数ですが、
&rest
というのを引数の前におけば、その引数名にまとめてリストにつめこんでくれます。
lisp
1(defun func (x &rest args)
2 (format "%s %s" x args))
3
4(func "hoge" "fuga" "piyo")
5=> "hoge (fuga piyo)"
この例では、第1引数x
は必須の引数ですが、args
は 直前に&rest
が指定されているので、可変長引数用の引数という扱いになります。
なのでargs
というリストが作られて、その中に "fuga" と "piyo"が入っています。
args
はただのリストなので、あとはmapcar
でもdolist
でもなんでも使えます。
で、ここまで書いておいてなんなのですが、emacsで M-x describe-function concat
とすると、下記のようにconcat
関数のヘルプが出ます。
concat is a built-in function in ‘C source code’.
(concat &rest SEQUENCES) <----ここ注目
以下省略
というわけで、concat
関数の引数にも &rest
が使われているので、何個でも文字列連結できるはず!ということがわかります。
以上、現場からでした。 ご参考まで。