% Function REVERSE, NREVERSE
Function REVERSE
, NREVERSE
reverse
sequence => reversed-sequence
nreverse
sequence => reversed-sequence
sequence - 正常なシーケンス
reversed-sequence - シーケンス
reverse
とnreverse
は、
sequenceと同じ種類の、同じ要素が逆順に配置された、
新しいシーケンスを返却します。
reverse
とnreverse
の違いは、
reverse
は常に新しいシーケンスを作成して返却するのに対して、
nreverse
はおそらく引数のsequenceを修正して返却します。
reverse
は、もしsequenceがvector
のとき、
返却値は新しい一次元のsimple-arrayであり、
sequenceと同じ実際の配列の要素の型を持ちます。
もしsequenceがリストなら、返却値は新しいリストです。
nreverse
は、もしsequenceがvector
のとき、
返却値は一次元のsimple-arrayであり、
sequenceと同じ実際の配列の要素の型を持ちます。
もしsequenceがリストなら、返却値はリストです。
nreverse
は、sequenceを破壊して再利用して、
返却値を生成するかもしれません。
返却値はsequenceと同一かもしれませんし、そうでないかもしれません。
特に、sequenceがリストのとき、
nreverse
は、sequenceのリスト構造の部分にあるどのコンスの
car
, cdr
部分でも、setf
を実行することが許されます。
sequenceがvector
のとき、
nreverse
は、返却値のvector
を求めるために、
sequenceの要素の順番を変更することが許されます。
(setq str "abc") => "abc"
(reverse str) => "cba"
str => "abc"
(setq str (copy-seq str)) => "abc"
(nreverse str) => "cba"
str => implementation-dependent
(setq l (list 1 2 3)) => (1 2 3)
(nreverse l) => (3 2 1)
l => implementation-dependent
nreverse
は、新しいシーケンスを作成するか、
sequenceの引数を変更するか、
あるいはその両方をするかもしれません。
(reverse
はseqeunceの修正を行いません)
なし。
sequenceが正常なシーケンスでないとき、
型type-error
のエラーを通知する準備をしなければなりません。
なし。
なし。