Ich lese "auf Lisp" und stieß auf diesen Code (ich habe es ein wenig vereinfacht).Was ist der Unterschied zwischen '(a b c) und (Liste' 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)
Was genau bedeutet das
*
? Ist es der vorherige Funktionsaufruf? Ist es geeignet, in realem Code zu verwenden?Warum ändert
(nconc * '(D E))
den Rückgabewert der erstenfoo
-Funktion?Ich dachte immer,
(list 'a 'b 'c)
und'(a b c)
sind gleich? Was ist der Unterschied?
hatte nicht daran gedacht;) –