2011-08-28 3 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

관련 문제