Estoy leyendo "En lisp" y encontré este código (lo simplifiqué un poco).¿Cuál es la diferencia entre '(a b c) y (lista' 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)
¿Qué significa exactamente
*
? ¿Es la llamada a la función anterior? ¿Es adecuado usarlo en el código del mundo real?¿Por qué
(nconc * '(D E))
cambia el valor de retorno de la primera funciónfoo
?Siempre pensé que
(list 'a 'b 'c)
y'(a b c)
son lo mismo? ¿Cuál es la diferencia?
no habíamos pensado en eso;) –