IA Tarea Lisp
LISP TUTORIAL
Profesor: Hugo VegaPágina 5
Inteligencia Artificial
Tipo de Datos:
Atomos
●
Ejemplo:
b, 9, luis, miedad, nil, T
Los números son especiales ya que siempre al evaluarse devuelven el mismo
número.
9 => 9
miedad => Error (variable not defined)
Para asignar un átomo a una variable se usa
setq
y/o
setf
(setq miedad 68) => 68
miedad => 68
Átomos reservados: nil and T
nil => nil
t => t
Los Atomos no son sensitivos a la gramatica (mayusculas o minusculas): xYz y
XYZ son el mismo atomo.
Listas
●
Ejemplos:
(g), ( 9 5), (r (s t u w) (x y) z), (), nil
nil puede ser tanto atomo como lista. Esto es equivalente a la lista sin elementos: ().
Profesor: Hugo VegaPágina 5
Inteligencia Artificial
Evaluando una lista siempre invoca a una función especial:
(nombrefuncion arg1 … argn)
( 9 5) => 4
(pencil 4 5 6) => Error (Esta funcion no esta definida)
( miedad 8) => 60
Funciones Primitivas
El programa Lisp incluye muchas funciones basicas como:
+, *, , /,
max
,
min
,
sqrt
.
Mas importante aun es que Lisp incluye funciones para operaciones:
(cons 7 nil) => (7)
(cons 8 (cons 9 nil)) => (8 9)
(cons z nil) => Error: variable z is not defined.
Necesitamos una manera de indicar al programa como diferenciar un atomo de
una lista, usamos ‘.
(
cons
‘z nil) => (z)
‘ puede ser aplicado para listas enteras:
(cons ‘z ‘(r s t u)) => (z r s t u)
Las listas pueden ser unidas mediante la función append, uniendo los
elementos de las listas indicadas
(list ‘r ‘s ‘t ‘u ‘v) => (r s t u)
(list ‘r ‘(s t u v)) => (r (s t u v))
(append ‘(r s t u) ‘(w x) ‘(y z)) => (r s t u w x y z)
Apostrofe ‘ y coma ,
Utilizando la function lisp, este toma los atomos colocados con apostrofe y los
elementos que se generan después de un resultado, para convertirlos en lista, por
ejemplo:
(list ‘r ‘5 (/ mi edad 4) ‘s) => (r 5 17 s)
Colocando el apostrofe fuera del parenthesis, este hara que todos los atomos
dentro se tomen como elementos posibles para la lista, para diferenciar si se quiere una
operación como elemento o su resultado, se coloca la coma delante para tomar su
resultado, por ejemplo:
‘(r 5 , (/ miedad 4) s)=> (r 5 17 s)
‘(r 5 (/ 20 4) s)=> (r 5 (/ 20 4) S)
Accediendo a las Listas
Profesor: Hugo VegaPágina 5
Inteligencia Artificial
first
y car, capturan el primer elemento de la lista, por ejemplo:
(first ‘(3 5 7)) => 3
(first ‘((r s t) 5 6 7 )) => (r s t)
last y cdr, capturan todos los elementos menos el primero, por ejemplo:
(rest ‘(3 5 7)) => (5 7) (rest ‘((r s t) 5 6 7 )) => (5 6 7)
car y cdr pueden ser combinados, asi:
(caar ‘((r s t) (u w x) y z)) => r
(cdar ‘((r s t) (u w x) y z)) => (s t)
Comparando
Tenemos dos formas de comparar, veamos:
(eq ‘b ‘b ) => T
(eq ‘a ‘b ) =>nil
(eq ‘(a) ‘a ) =>nil
ó
(equal ‘a ‘a ) => T
(equal ‘(a) ‘(a) ) => T
(equal 3 (+ 1 2 ) ) => T
Uniendo
Se pueden unir listas sin repetir elementos o compararlas, por ejemplo:
( union ‘( m n) ‘( n p) ) => (m n q)
( union ‘( (m) ( n ) ) ‘( p ) ) => ( (m) ( n) p )
( union ‘( (m) ( n ) ) ‘( (p) ) : test # ‘equal ) => ( (m) ( n) )
Mas Funciones
(length ‘( n (m p) q) ) => 3
(atom ‘n ) => T
(atom ‘(nm) ) => NIL
(listp ‘n ) => NIL
(listp ‘(n m) ) => T
(listp () ) => T
Definiendo Funciones
(defun
(defun square “computes square “ (x) (*x x) )
Profesor: Hugo VegaPágina 5
Inteligencia Artificial
Condiciones
Ejemplos
:
●
(if
( if ( >= n m) ( n m ) ( m n ) )
●
(cond ( (testa) (form1a ) ( form2a)…(formNa) )
( (testb) (form1b)…(formNB))…
(t (form1k)…(formNk) ) )
...
Regístrate para leer el documento completo.