Aprende Lisp Inteligencia Artificial
Michel Angeles CormejoDocumentos de Investigación3 de Julio de 2017
9.689 Palabras (39 Páginas)228 Visitas
Manual de Lisp
2991
Contenido
- Introducci´on 1
- Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
- Los objetos b´asicos . . . . . . . . . . . . . . . . . . . . . . . . 1
- Los ´atomos . . . . . . . . . . . . . . . . . . . . . . . . 2
- Las listas . . . . . . . . . . . . . . . . . . . . . . . . . 2
- Funcionamiento b´asico del int´erprete . . . . . . . . . . . . . . 2
- Evaluaci´on de los ´atomos . . . . . . . . . . . . . . . . . 2
- Evaluaci´on de las listas . . . . . . . . . . . . . . . . . . 3
- Definici´on de funciones 4
- Funciones an´onimas . . . . . . . . . . . . . . . . . . . . . . . . 4
- Funciones con nombres . . . . . . . . . . . . . . . . . . . . . . 4
- Predicados 5
- Valores l´ogicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
- Predicados de tipos . . . . . . . . . . . . . . . . . . . . . . . . 5
- Predicados de igualdad . . . . . . . . . . . . . . . . . . . . . . 6
- Operadores l´ogicos . . . . . . . . . . . . . . . . . . . . . . . . 7
- Estructuras de control 8
- Constantes y variables . . . . . . . . . . . . . . . . . . . . . . 8
- Referencias . . . . . . . . . . . . . . . . . . . . . . . . 8
- Asignaciones . . . . . . . . . . . . . . . . . . . . . . . . 8
- Invocaci´on de funciones . . . . . . . . . . . . . . . . . . . . . . 9
- Funciones de evaluaci´on . . . . . . . . . . . . . . . . . . . . . 9
- Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . 10
- Condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
- Iteraci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
- Iteraci´on indefinida . . . . . . . . . . . . . . . . . . . . 12
- Iteraci´on general . . . . . . . . . . . . . . . . . . . . . 13
- Iteraciones particulares . . . . . . . . . . . . . . . . . . 14
- Funciones de aplicaci´on . . . . . . . . . . . . . . . . . . 15
- Iteraciones del tipo PROG . . . . . . . . . . . . . . . . 16
- Nu´meros 18
- Operaciones num´ericas . . . . . . . . . . . . . . . . . . . . . . 18
- Comparaciones num´ericas . . . . . . . . . . . . . . . . . . . . 20
- Las funciones trigonom´etricas y matem´aticas . . . . . . . . . . 21
ii
- Listas 23
- Las funciones de bu´squeda en las listas . . . . . . . . . . . . . 23
- Las funciones de construcci´on de listas . . . . . . . . . . . . . 25
- Las funciones de modificaci´on f´ısica . . . . . . . . . . . . . . . 27
- Listas de asociaci´on (A–listas) . . . . . . . . . . . . . . . . . . 28
- Listas de propiedades (P–listas) . . . . . . . . . . . . . . . . . 29
- Funciones de lectura y escritura 32
- Funciones de lectura . . . . . . . . . . . . . . . . . . . . . . . 32
- Variables de escritura . . . . . . . . . . . . . . . . . . . . . . . 32
- Funciones de escritura . . . . . . . . . . . . . . . . . . . . . . 33
- Ficheros 35
- Funciones sobre ficheros . . . . . . . . . . . . . . . . . . . . . 35
- La funci´on LOAD . . . . . . . . . . . . . . . . . . . . . . . . . 36
- Ayudas 37
- Funciones de ayuda . . . . . . . . . . . . . . . . . . . . . . . . 37
- El rastreador . . . . . . . . . . . . . . . . . . . . . . . 37
- La ejecuci´on paso–a–paso . . . . . . . . . . . . . . . . 37
- Descripci´on de s´ımbolos . . . . . . . . . . . . . . . . . 39
- Macro–caracteres . . . . . . . . . . . . . . . . . . . . . . . . . 41
- Teclas definidas . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- Funciones sobre el sistema . . . . . . . . . . . . . . . . . . . . 42
Bibliograf´ıa 44
´Indice 46
iii
1 Introducci´on
1.1 Introducci´on
Para cargar el GOLDEN COMMON LISP se escribe: C> GCLISP
y el sistema responde:
GOLDEN COMMON LISP, Version 1.01
Copyright (C) 1985 by Gold Hill Computers
; Reading file INIT.LSP
Type Alt-H for Help
Top-Level
*
GCLISP entra en el bucle principal del int´erprete que va, indefinidamente a leer una expresi´on sobre el terminal, evaluarla e imprimir el valor de esta evaluacio´n. GCLISP indica que espera la lectura de una expresi´on imprimiendo el car´acter * al comienzo de cada l´ınea. El valor de la evaluaci´on de una expresi´on se imprime en la l´ınea siguiente. Para salir se escribe (EXIT). Veamos un ejemplo de sesi´on con GCLISP:
C> GCLISP
GOLDEN COMMON LISP, Version 1.01
Copyright (C) 1985 by Gold Hill Computers
; Reading file INIT.LSP
Type Alt-H for Help
Top-Level
- (+ 2 3)
5
- (EXIT)
C>
1.2 Los objetos b´asicos
Los objetos que se usan en Lisp se llaman S–expresiones (por “Symbolic expressions”).
Estos objetos se clasifican en los siguientes tipos:
nu´meros
[pic 1]
´atomos s´ımbolos
S–expresiones
cadenas de caracteres
[pic 2] listas
Para referirnos a dichos objetos, usaremos las siguientes abreviaturas: s S–expresi´on a ´atomo
simb s´ımbolo n nu´mero l lista
1.2.1 Los ´atomos
Los s´ımbolos
Los s´ımbolos son cadenas continuas de caracteres (conteniendo al menos un car´acter no num´erico). Por ejemplo, AGUA, A12, VAR-AUX, + son s´ımbolos. Los nu´meros
GCLISP manipula nu´meros enteros sobre 16 bits (permitiendo calcular en el intervalo [−215 + 1,215 − 1] , i.e. [-32767, 32767]) y nu´meros flotantes sobre 128 bits (permitiendo calcular en el intervalo [-1.0F+38, 1.0F+38]).
Las cadenas de caracteres
Una cadena de caracteres es una sucesi´on de caracteres, con o sin huecos, que comienza y termina por dobles comillas. Por ejemplo, "A 1 23" es una cadena de caracteres.
1.2.2 Las listas
Una lista es una sucesi´on ordenada, posiblemente vac´ıa, de objetos. Sinta´cticamente, se compone de un par´entesis abierto, objetos separados por huecos y un par´entesis cerrado. Por ejemplo, (a 1 b), (), (a (b (c))) son listas.
1.3 Funcionamiento b´asico del int´erprete
1.3.1 Evaluacio´n de los ´atomos
El valor de un nu´mero es el propio nu´mero. El valor de un s´ımbolo es:
- el nu´mero que tenga asignado, si actu´a como variable num´erica;
- la S-expresi´on que tenga asignada, en caso contrario.
El valor de una cadena de caracteres es la propia cadena.
1.3.2 Evaluacio´n de las listas
Las listas se interpretan como llamadas a funciones. El primer elemento es el nombre de la funci´on y el resto son los argumentos. Por ejemplo, la lista (+ 2 3), se interpreta como la funci´on + actuando sobre 2 y 3.
...