IA Tarea Lisp

Páginas: 5 (1105 palabras) Publicado: 20 de abril de 2015
Inteligencia Artificial 

 
 
 
 
 
 

LISP TUTORIAL 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Profesor: Hugo VegaPágina 5 
 
 

Inteligencia Artificial 

 
 
 
 
 
 
 
 
 
 Tipo de Datos:  
 
Atomos 
 


Ejemplo:

b, 9, luis, mi­edad, nil, T 

 
Los números son especiales ya que siempre al evaluarse devuelven el mismo 
número. 
9 => 9 
mi­edad => Error (variable not defined) 
 Para asignar un átomo a una variable se usa ​
setq​
 y/o ​
setf 
(setq mi­edad 68) => 68 
mi­edad => 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: 
 
(nombre­funcion arg1 … argn) 
(­ 9 5) => 4 
(pencil 4 5 6) => Error (Esta funcion no esta definida) 
(­ mi­edad 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 , (/ mi­edad 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  < then­expr> < else­expr> ) 

 
( if ( >= n m)  (­ n  m )  (­ m  n )  ) 
 


(cond ( (testa) (form1a )  ( form2a)…(formNa) ) 
( (testb) (form1b)…(formNB))… 
(t (form1k)…(formNk) ) ) 

 ...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Lisp
  • lisp
  • Lisp
  • lisp
  • A IA
  • IA
  • Tarea ia tipos y disenos de investigacion
  • lisp dicertacion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS