【发布时间】:2010-11-27 21:14:24
【问题描述】:
我正在阅读“On lisp”并遇到了这段代码(我简化了一点)。
CL-USER> (defun foo ()
'(a b c))
FOO
CL-USER> (foo)
(A B C)
CL-USER> (nconc * '(D E))
(A B C D E)
CL-USER> (foo)
(A B C D E)
CL-USER> (defun foo ()
(list 'a 'b 'c))
STYLE-WARNING: redefining FOO in DEFUN
FOO
CL-USER> (foo)
(A B C)
CL-USER> (nconc * '(D E))
(A B C D E)
CL-USER> (foo)
(A B C)
*到底是什么意思?是之前的函数调用吗?是否适合在现实世界的代码中使用?为什么
(nconc * '(D E))会改变第一个foo函数的返回值?我一直以为
(list 'a 'b 'c)和'(a b c)是一样的?有什么区别?
【问题讨论】:
标签: lisp common-lisp sbcl