% Function CONCATENATE
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
のエラーが発します。
なし。