PDF de programación - Funciones útiles para el desarrollo de programas LISP

Imágen de pdf Funciones útiles para el desarrollo de programas LISP

Funciones útiles para el desarrollo de programas LISPgráfica de visualizaciones

Publicado el 23 de Enero del 2021
370 visualizaciones desde el 23 de Enero del 2021
16,8 KB
3 paginas
Creado hace 20a (30/09/2003)
FUNCIONES ÚTILES PARA EL DESARROLLO DE PROGRAMAS LISP

Se describen a continuación algunas funciones y macros útiles para el desarrollo de programas en Lisp. En
general todos los intérpretes de Lisp disponen de estas funciones. Algún detalle menor es propio de CLISP
(véase el fichero “impnotes.txt”).

1. USO DE FICHEROS

ED
(ED nom-fich)
Llama al editor externo especificado por la variable *EDITOR* (ver config.lsp). nom-fich debe ser una cadena
de caracteres. Nótese que el caracter \ es el caracter de escape, p. ej.: (ed “c:\\micodigo\\hola.lsp”)

Hace que el intérprete emita un breve mensaje indicando que se está cargando un fichero.
LOAD imprime el valor de cada expresión evaluada.
La entrada del fichero se muestra por pantalla. Es útil para saber donde se producen los
errores al cargar un fichero.

LOAD
(LOAD nomfich &key (verbose *load-verbose*) (print *load-print*) (echo *load-echo*) compiling)
LOAD “carga un fichero”, es decir, se lee el contenido del fichero con el mismo resultado que si se hubiese
escrito directamente en el intérprete.
:verbose T
:print T
:echo T


:compiling T Cada expresión leída se compila sobre la marcha. El código compilado se evalúa

Los valores iniciales son



Si no se especifica extensión para el fichero, se toma el más reciente de #.lsp o #.fas (véase compile-file).

inmediatamente y -al contrario que COMPILE-FILE no se escribe en ningún fichero.

*load-verbose* : T,
*load-print*
: T,
: NIL.
*load-echo*



T, NIL o una cadena de caracteres, símbolo, pathname o stream de salida.
T, NIL o una cadena de caracteres, símbolo, pathname o stream de salida.
Indica si deben aparecer advertencias por pantalla.
Indica si deben aparecer mensajes de error por pantalla.
Indica si deben aparecer mensajes sobre que expresión se está compilando.

COMPILE-FILE
(COMPILE-FILE fichero-entrada &key (output-file T) (listing NIL) (warnings *compile-warnings*) (verbose
*compile-verbose*) (print *compile-print*))
Compila un fichero generando código binario. La evaluación de código compilado puede ser unas diez veces
más rápida que la del código interpretado, por eso es conveniente compilar los ficheros una vez terminado el
desarrollo del código que contienen.
fichero-entrada Una cadena de caracteres, símbolo o pathname.
output-file

listing
warnings
verbose
print


Para cada fichero de entrada (por defecto tipo #”.lsp”) se generan los siguientes ficheros:

fichero de salida



fich. salida auxiliar



fichero de listado



fich. de salida C



Solo si :output-file no es NIL
Tipo por defecto #”.fas”
Contenido: puede cargarse usando la función LOAD.
Solo si :output-file no es NIL
Tipo por defecto #”.lib”
Contenido: usado por COMPILE-FILE al compilar una forma REQUIRE referente al
fichero de entrada.
Solo si :listing no es NIL
Tipo por defecto #”.lis”
Contenido: desensamblaje del fichero de salida.
Solo si :output-file no es NIL
Tipo por defecto #”.c”
Contenido: interfaz con funciones externas. Este fichero se borra si esta vacio.



Inteligencia Artificial e I.C. Curso 2001/2002

Funciones útiles/ 1

2. TRAZA Y DEPURACIÓN

Puede ser un símbolo (el nombre de la función a trazar) o bien una lista de la

forma
(simbolo



macro TRACE
(TRACE funcion*)
(TRACE) muestra una lista con las funciones trazadas actualmente.
(TRACE funcion+) provoca la traza de las funciones que recibe como argumento.
funcion



En todas estas formas puede referenciarse



y después de retornar de la función

y puede abandonarse la llamada a la función con valores especificados usando RETURN.

;no hay salida de traza mientras forma sea cierta
;invoca la traza paso a paso (stepper) tan pronto como
;la forma es cierta
;evalúa la forma antes de llamar a la función
;evalúa la forma después de retornar de la función
;entra en un ciclo break antes de llamar a la función si
;la forma es cierta
;entra en un ciclo break después de retornar de la
;función si la forma es cierta
;imprime los valores de la forma antes de llamar a la
;función.
;imprime los valores de la forma después de retornar
;de la función.
;imprime los valores de la forma antes de llamar y
;después de retornar de la función.

[:supress-if forma?
[:step-if forma?


[:pre forma?

[:post forma?

[:pre-break-if forma?

[:post-break-if forma?


[:pre-print forma?


[:post-print forma?

[:print forma?

)

la propia función
los argumentos de la función
la llamada a la macro/función



como *TRACE-FUNCTION*
como *TRACE-ARGS*
como *TRACE-FORM*

la lista de valores devueltos por la llamada a la función como *TRACE-VALUES*



macro UNTRACE
(UNTRACE función*)
(UNTRACE) elimina la traza de todas las funciones.
(UNTRACE funcion+) elimina la traza de las funciones especificadas.

muestra una lista con las ordenes disponibles
vuelve al nivel de error anterior o sale del depurador (si era el último)
permite continuar la evaluación del programa

BREAK
(BREAK)
Provoca la entrada en un nivel de error del depurador (debugger). Lo mismo ocurre cuando se produce un
error en la evaluación de una expresión. En un nivel de error además de poder evaluarse normalmente
cualquier expresión se dispone de ciertas ordenes. Las ordenes deben escribirse literalmente, sin rodearlas
de paréntesis, comillas ni espacios en blanco. Por ejemplo:


Help
Abort

Continue

El depurador permite examinar la pila interna del sistema. La pila se organiza en marcos y otros elementos
de la pila. Normalmente la invocación de una función interpretada y cada evaluación de una función
interpretada corresponden a un marco de la pila. Algunas formas especiales como LET y LET* producen
marcos especiales en la pila.
En un nivel de error hay un marco de pila actual, que inicialmente es el marco más reciente de la pila, pero
que puede cambiarse usando las órdenes del depurador Up y Down.
La evaluación de las expresiones escrítas en el intérprete se realiza en el entorno léxico del marco de la pila
actual.
Existe un “modo de pila” actual que define el nivel de detalle con que se muestra el contenido de la pila.
Existen cinco modos de pila, siendo los más sencillos el 4 y el 5. Algunas órdenes útiles son:
Mode-4



establece 4 como modo de pila actual (por defecto): solo se consideran los marcos EVAL y
APPLY. La evaluación de cada expresión en el intérprete corresponde a un marco EVAL.

Inteligencia Artificial e I.C. Curso 2001/2002

Funciones útiles/ 2

Mode-5


Where

Up

Down
Top

Bottom


Backtrace

Para más información puede leerse el fichero “impnotes.txt”.

establece 4 como modo de pila actual (por defecto): solo se consideran los marcos APPLY.
Cada invocación de una función interpretada corresponde a un marco APPLY.
muestra el marco actual.
avanza un marco, p. ej. al que realizó la llamada si esta en modo 5.
retrocede un marco, p. ej. al llamado si esta en modo 5.
avanza al marco superior
avanza al marco inferior (el más reciente), probablemente el que provocó la entrada en el
depurador
muestra la pila en el modo actual: primero el marco inferior, y último el superior.

STEP
(STEP expresión)
Si alguna expresión que deseamos evaluar (una forma) devuelve un valor extraño o produce un error, puede
seguirse su evaluación paso a paso usando (STEP expresión).
Tras evaluar STEP se entra en un nivel de depuración similar al provocado por BREAK o un error. Las
órdenes descritas para BREAK también son por lo general aplicables aquí.
STEP dispone además de las siguientes órdenes:

Step

Next
Over

Continue

entra en la siguiente forma: evalúa la forma en el modo paso a paso,
salta la siguiente forma: evalúa la forma del tirón,
salta un nivel: evalúa del tirón hasta el siguiente return,
desactiva el modo paso a paso y continúa la evaluación.

3. OTRAS FUNCIONES DE INTERÉS

SHELL
(SHELL [orden?)
Realiza una llamada al sistema operativo. (SHELL) permite el uso interactivo del sistema operativo. (SHELL
orden) llama al sistema operativo solo para la ejecución de la orden dada.

ROOM
(ROOM)
Devuelve dos valores: el número de bytes ocupados actualmente por objetos Lisp, y el número de bytes que
pueden ser asignados a nuevos objetos antes de que se realice la próxima recolección de basura.

TIME
(TIME expresión)
Muestra información sobre el tiempo empleado en la evaluación de la expresión.

Inteligencia Artificial e I.C. Curso 2001/2002

Funciones útiles/ 3
  • Links de descarga
http://lwp-l.com/pdf18748

Comentarios de: Funciones útiles para el desarrollo de programas LISP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad