Practical Common Lispを読んでいます。第11章では、ソートについて次のように述べています。
通常、シーケンスをソートした後は、シーケンスのソートされていないバージョンを気にすることはないため、ソートの過程でシーケンスを許可
SORT
しSTABLE-SORT
て破棄することは理にかなっています。ただし、次のように書くことを忘れないでください。(setf my-sequence (sort my-sequence #'string<))
次のコードを試しました:
CL-USER> (defparameter *a* #( 8 4 3 9 5 9 2 3 9 2 9 4 3))
*A*
CL-USER> *a*
#(8 4 3 9 5 9 2 3 9 2 9 4 3)
CL-USER> (sort *a* #'<)
#(2 2 3 3 3 4 4 5 8 9 9 9 9)
CL-USER> *a*
#(2 2 3 3 3 4 4 5 8 9 9 9 9)
*a*
このコードでは、関数によって変数が変更されていることがわかりsort
ます。
では、なぜ本はそれが課題を行うために必要であると言っているのですか?
私はSBCL + Ubuntu 14.04 + Emacs + Slimeを使用しています
編集:
@Sylwester のコメントに続いて*a*
、値が変更されたことを明確にするための評価を追加します。