'foo
evalúa al símbolo FOO.
#'foo
Evalúa la función vinculada al nombre FOO.
En Lisp un símbolo se puede llamar como una función cuando el símbolo FOO tiene un enlace de función. Aquí CAR es un símbolo que tiene un enlace de función.
Pero esto no funciona:
(flet ((foo (a) (+ a 42)))
(mapcar 'foo '(1 2 3 4 5)))
Eso es porque FOO como un símbolo no tiene acceso a la función léxica local y el sistema Lisp se quejará cuando foo
no es una función definida en otro lugar.
tenemos que escribir:
(flet ((foo (a) (+ a 42)))
(mapcar #'foo '(1 2 3 4 5)))
Aquí el (función foo) o foo sus notación abreviada # 'se refiere al léxico FOO función local.
Tenga en cuenta también que, en
(funcall #'foo ...)
vs
(funcall 'foo ...)
La tarde podría hacer una más indirecta, ya que tiene que buscar la función del símbolo, mientras que foo # 'denota la función de directamente.
Resumen:
Si tiene un símbolo de unión, llamar a una función a través del símbolo funciona una función.