我正在阅读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*
因此很明显该值已更改。