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"
(=> "abc"
str setq str (copy-seq str)) => "abc"
(nreverse str) => "cba"
(=> implementation-dependent
str setq l (list 1 2 3)) => (1 2 3)
(nreverse l) => (3 2 1)
(=> implementation-dependent l
nreverse
は、新しいシーケンスを作成するか、 sequenceの引数を変更するか、 あるいはその両方をするかもしれません。 (reverse
はseqeunceの修正を行いません)
なし。
sequenceが正常なシーケンスでないとき、 型type-error
のエラーを通知する準備をしなければなりません。
なし。
なし。