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-dependentnreverseは、新しいシーケンスを作成するか、 sequenceの引数を変更するか、 あるいはその両方をするかもしれません。 (reverseはseqeunceの修正を行いません)
なし。
sequenceが正常なシーケンスでないとき、 型type-errorのエラーを通知する準備をしなければなりません。
なし。
なし。