Czytam "Na lisp" i napotkałem ten kod (trochę go uprościłem).Jaka jest różnica między "(a b c) a (listą" a "b" c)?
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)
Co dokładnie
*
oznacza? Czy to poprzednie wywołanie funkcji? Czy można go używać w prawdziwym kodzie?Dlaczego
(nconc * '(D E))
zmienia wartość zwracaną pierwszej funkcjifoo
?Zawsze uważałem, że
(list 'a 'b 'c)
i'(a b c)
są takie same? Jaka jest różnica?
o tym nie myślałem;) –