Aprende Lisp Inteligencia Artificial
Enviado por Christopher • 19 de Noviembre de 2018 • 7.085 Palabras (29 Páginas) • 321 Visitas
...
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.
---------------------------------------------------------------
2 Definici´on de funciones
2.1 Funciones an´onimas
((LAMBDA (var1...varN) s1...sM) val1...valN) asocia los valores val1,..., valN a las variables var1,..., varN; evalu´a las expresiones s1,..., sM y devuelve el valor de sM.
((LAMBDA (M N) (+ M N)) 2 3) ---> 5
(MAPCAR #’(LAMBDA (N) (* 2 N)) ’(1 2 3)) ---> (2 4 6)
2.2 Funciones con nombres
(DEFUN simb l s1...sN)
permite definir nuevas funciones.
simb es el nombre de la funci´on definida.
l es la lista de par´ametros (argumentos); son variables locales que no afectan a posibles valores previos, en general. Si no hay argumentos, es obligatorio poner ().
s1,..., sN son las expresiones que definen el cuerpo de la funci´on.
Devuelve simb.
- (DEFUN CUADRADO (N) (* N N))
CUADRADO
- (CUADRADO 3)
9
3 Predicados
3.1 Valores l´ogicos
NIL
su valor es NIL y representa “lo falso”. Puede escribirse como ().
T
su valor es T y representa “lo verdadero”.
3.2 Predicados de tipos
(NULL s)
devuelve T, si s es NIL y NIL, si no.
(ATOM s)
Devuelve T, si s es un ´atomo y NIL, si no.
(ATOM 12) ---> T (ATOM ’ABC) ---> T (ATOM "A B") ---> T
(ATOM A) ---> ERROR
(ATOM ’(A B)) ---> NIL (ATOM NIL) ---> T
(SYMBOLP s)
devuelve T, si s es un s´ımbolo y NIL, si no.
(SYMBOLP 12) ---> NIL (SYMBOLP ’ABC) ---> T
(SYMBOLP "A B") ---> NIL
(SYMBOLP A) ---> ERROR
(SYMBOLP ’(A B)) ---> NIL (SYMBOLP NIL) ---> T
(NUMBERP s)
devuelve T, si s es un nu´mero y NIL, si no.
(NUMBERP 123) ---> T
(NUMBERP ’A) ---> NIL
(SETQ A 3) ---> 3
(NUMBERP
...