DEFUN permite definir una nueva función de usuario con elnombre sím (el nombre de la función se incluyeautomáticamente en un QUOTE). Detrás del nombre de lafunción aparece una lista de parámetros (posiblementevacía), con los argumentos a recibir, y que puede estar seguida por unabarra oblicua y los nombres de uno o más símbolos locales(variables locales) que serán definidas para uso exclusivo de estafunción. Esta barra oblicua debe ir separada del primer símbololocal y del último argumento, si existe, por un espacio comomínimo. Si no declara ningún argumento ni variable local, se debeincluir una lista vacía tras el nombre de la función. Losargumentos son tratados como una especie de variables locales en el sentido deque no estarán disponibles fuera de la función. Los nombres deargumentos deben ser únicos dentro de la misma función.
Así hemos creado una nueva función Lisp que puede llamarsedesde el nivel superior o anidada en otras funciones:
Un programa Lisp usualmente incluye una colección de tales defuns,asemejándose en ello a un fichero de definiciones de procedimientos enlenguajes tales como C o Pascal. Pero, según puntualiza Graham, "algo muy diferente estásucediendo aquí. Las funciones Lisp son objetos por sí mismas. Loque realmente hace DEFUN es construir una función y guardarlabajo el nombre que aparece como primer argumento." Paul Graham, OnLisp, pág. 10 Podemos acceder a la función asociada al símbolo DOBLE utilizando la función Visual LISP vl-symbol-value:
En versiones anteriores de AutoLISP la función creada con defun era una lista:
En Visual LISP la función de usuario creada con defun es unafunción compilada que contiene instrucciones en lenguaje demáquina, por lo tanto en Autocad 2000 obtendremos:
|
AutoCAD: Visual LISP > Apuntes para un Curso... > Programación de Aplicaciones Gráficas > 2. Técnicas Fundamentales > 2.2. Funciones > 2.2.4. Funciones Definidas por el Usuario >