2011-08-28 7 views

答えて

8

をチェックし、あなたはそれ戻りソートされたリスト、および入力リストは、副作用によって修正であることがわかります。引数リストにソートされた結果が含まれているとは限りません。ソートアルゴリズムによって何らかの形で変更されます。または、すぐに言えば:sortは、です。破壊的なです。

だから、あなたはsortの戻り値を代入/バインドすることをお勧めします:

elisp> (setq x '(2 1 3)) 
(2 1 3) 

elisp> (setq x (sort x '<)) 
(1 2 3) 

elisp> x 
(1 2 3) 
+2

また、リテラルを破壊的に変更すると、予想外の結果が生じる可能性があることに注意してください。 (例:http://stackoverflow.com/questions/6865142/lisp-cons-and-number-number-difference/6866155#6866155、CLについてはEmacs-Lispにも適用されます) – danlei

1

私はelispの経験はあまりありませんが、carとcdrの実装のため正しく動作しています。あなたはsortのマニュアルを読んでいる場合http://www.gnu.org/software/emacs/elisp/html_node/Rearrangement.html#Rearrangement

+0

私は不明であったと思います。私は(最後のx)を意味するのではなく、xの最終的な値です。 –

+0

私はレスポンスを編集しました。 –