我正在阅读“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)
都一样?有什么不同?