I am reading "On lisp" and encounter this code (I simplified a bit).
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)
What does "*" exactly mean, the previous function call? Is it suitable to use in real world code?
Why does (nconc * '(D E)) change the return value of the first foo function? I always thought (list 'a 'b 'c) and '(a b c) are the same? What is the difference?