2.2.4.3. Function

El operador FUNCTION le indica al compilador Visual LISP que enlacey 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 QUOTEexcepto en que fuerza la compilación del argumento de la misma maneraque lo haría DEFUN. Si incluímos las funciones internasen 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 USUBRanónima) en lugar de ser simplemente evaluado en tiempo deejecución. Las expresiones-LAMBDA compiladas contendráninformación para su depuración al ser cargadas en el IDE VisualLISP. 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 lambdaprecedida 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 compiladorpodrá 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ónal generarse el correspondiente código optimizado en lenguaje demáquina.