2.2.4.3. Function

El operador FUNCTION le indica al compilador Visual LISP que enlace y optimice un argumento tal como si fuera una función primitiva.

(function símbolo | expresión-lambda)

FUNCTION es idéntico a la función QUOTE excepto en que fuerza la compilación del argumento de la misma manera que lo haría DEFUN. Si incluímos las funciones internas en expresiones del tipo (function (lambda <parámetros> <expresiones> ...) en lugar de (quote (lambda <parámetros> <expresiones> ...)) ó '(lambda <parámetros> <expresiones> ...), nos aseguraremos que el código sea enlazado (linked) y optimizado en tiempo de compilación (como una USUBR anónima) en lugar de ser simplemente evaluado en tiempo de ejecución. Las expresiones-LAMBDA compiladas contendrán información para su depuración al ser cargadas en el IDE Visual LISP. Admite un argumento símbolo que nombra una función y una expresión-lambda de la forma: (LAMBDA argumentos {expresión-S}*)

Ejemplos:
El compilador Visual LISP no puede optimizar la expresión lambda precedida de apóstrofe (QUOTE) en la siguiente expresión:

(mapcar
'(lambda (x) (* x x))
'(1 2 3))

Pero una vez incluida la expresión dentro de FUNCTION el compilador podrá optimizar la expresión lambda:

(mapcar
(function (lambda (x) (* x x)))
'(1 2 3))

Lo que redundará en un incremento de la velocidad de ejecución al generarse el correspondiente código optimizado en lenguaje de máquina.