adh*_*nay 2 clisp sbcl side-effects common-lisp
当我进入
(defvar lst '(1 2 3 4 5))
(nreverse lst)
lst
Run Code Online (Sandbox Code Playgroud)
在sbcl我得到了答案(1),而在clisp我得到了预期的答案(5 4 3 2 1).
有趣的是,第二行打印反转列表,但存储在lst中的值是错误的.这是一个功能还是一个bug?我应该只在sbcl上使用reverse吗?
nreverse
可能作为副作用以未指定的方式改变原始列表.
您应该仅将该函数的结果用作反转列表.
从副作用中可以看出,SBCL和CLISP正在使用不同的实施策略.但你不应该利用这些知识.仅使用功能结果.nreverse
如果效率很重要且可以销毁原始列表,则仅使用.
归档时间: |
|
查看次数: |
74 次 |
最近记录: |