Function CONCATENATE
concatenate
result-type &rest sequences => result-sequence
result-type - sequence
の型指定子
sequences - シーケンス
result-sequence - 型result-typeの正常なシーケンス
concatenate
は、引数に指定された順番で、 全sequencesの個々の全要素を含んだシーケンスを返却します。 シーケンスは型result-typeであり、 それは型sequence
のサブタイプでなければなりません。
全てのsequencesはコピーされ、 結果は、どのsequencesに対しても どのような構造でも共有されてはいけません。 したがって、もしただひとつだけシーケンスが与えられ、 その型がresult-typeであったとき、 concatenate
は単純にそれを返却するのではなく、 sequencesをコピーすることが要求されます。
もしsequencesのどの要素も、 結果のシーケンスの要素になりえないときはエラーです。 もしresult-typeがlist
のサブタイプのときは、 返却値はリストでしょう。
もしresult-typeがvector
のサブタイプの場合、 実装がresult-typeを要素の型として決めることができるのであれば、 その要素の型をアップグレードした結果が返却値の配列の要素の型になります。 しかし実装が要素の型を決定できないか、あるいは*
のときは、 返却値の配列の要素の型はt
になります。 その他の場合はエラーが発生します。
concatenate 'string "all" " " "together" " " "now") => "all together now"
(concatenate 'list "ABC" '(d e f) #(1 2 3) #*1011)
(=> (#\A #\B #\C D E F 1 2 3 1 0 1 1)
concatenate 'list) => NIL
(concatenate '(vector * 2) "a" "bc") should signal an error (
なし。
result-typeが、 list
のサブタイプでも、 vector
のサブタイプでもないとき、 型type-error
のエラーが発します。
result-typeで指定した要素数と、 sequencesの合計が違う場合は、 型type-error
のエラーが発します。
なし。