2. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Contenido
1 Introducci´on
2 Caracter´ısticas del Lenguaje
3 Funciones en LISP
4 Compiladores de LISP
5 LISP EN IA
6 EJEMPLOS
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
3. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Contenido
1 Introducci´on
2 Caracter´ısticas del Lenguaje
3 Funciones en LISP
4 Compiladores de LISP
5 LISP EN IA
6 EJEMPLOS
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
4. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Contenido
1 Introducci´on
2 Caracter´ısticas del Lenguaje
3 Funciones en LISP
4 Compiladores de LISP
5 LISP EN IA
6 EJEMPLOS
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
5. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Contenido
1 Introducci´on
2 Caracter´ısticas del Lenguaje
3 Funciones en LISP
4 Compiladores de LISP
5 LISP EN IA
6 EJEMPLOS
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
6. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Contenido
1 Introducci´on
2 Caracter´ısticas del Lenguaje
3 Funciones en LISP
4 Compiladores de LISP
5 LISP EN IA
6 EJEMPLOS
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
7. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Contenido
1 Introducci´on
2 Caracter´ısticas del Lenguaje
3 Funciones en LISP
4 Compiladores de LISP
5 LISP EN IA
6 EJEMPLOS
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
8. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Introducci´on
Historia
Especificado en 1958 por John McCarthy, es el segundo m´as
viejo lenguaje de programaci´on de alto nivel.
Lisp fue pionero en muchas ideas en ciencias de la
computaci´on, incluyendo las estructuras de datos de ´arbol, el
manejo de almacenamiento autom´atico, tipos din´amicos, y el
compilador auto contenido.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
9. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Objeto de datos
Entre las caracter´ısticas m´as importantes podemos mencionar:
• Todas las variables son punteros
• Liberaci´on autom´atica de memoria
• Adecuado para prototipados, c´alculo y c´alculo simb´olico
• Paradigma de programaci´on funcional
• Lenguaje Interpretado
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
10. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Objeto de datos
Datos (Expresiones): Los tipos de datos originales son los
´atomos y las listas. Los ´atomos: son las expresiones LISP
m´as elementale debido a que se asemejan a las palabras de un
lenguaje com´un. Las listas: son grupos de valores
relacionados, separados por espacios e incluidos entre
par´entesis redondos ”(”Y ”)”.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
11. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Control de Secuencia
La ejecuci´on del programa consiste en la evaluaci´on de las
funciones contenidas en el mismo.
Expresiones:
• Condicional
• Operaciones sobre ´atomos (en preorden): +, -, *, /
• Operaciones sobre listas: cons, list, replace, null, equal.
• Operaciones sobre propiedades: put, get.
• Enunciados: prog() para ejecuci´on secuencial.
• Entrada y salida: open(), read(), print().
• Definici´on de funciones: defun, define.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
12. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Gestion de Sub programas
Tres clases de funciones:
• Funci´on interpretada: en forma de estructura de listas.
Primitivas eval y apply.
• Funci´on compilada: compiladas en un bloque de c´odigo
m´aquina que puede ser ejecutado por el int´erprete del
hardware.
• Macro: se declara con define. Es simplemente una funci´on
ordinaria en LISP. Puede ser interpretada y compilada.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
13. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Gesti´on de almacenamiento
La memoria se estructura en forma de mont´ıculo,usa espacios
libres y un recolector de basura
Entorno de referencia:
• Local, es el que se da en las listas.
• Global o com´un, se consigue mediante asociaci´on de un
´atomo.
Paso de par´ametros:
• Transmisi´on por valor, consiste en evaluar las expresiones de
una lista de par´ametros.
• Transmisi´on por nombre, transmitir las expresiones de la
lista de par´ametros sin evaluar, y dejar que la funci´on llamada
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
14. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Predicados
Estos eval´uan cierto o falso, en Lisp falso es NIL:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
15. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Predicados para comprobaci´on de tipo de objeto:
INTEGERP
Comprueba si el argumento es un n´umero entero.
(defun integerp (dato)(eq (type dato) ’INT))
REALP
Comprueba si el argumento es un n´umero real.
(defun realp (dato)(eq (type dato) ’REAL))
STRINGP
Comprueba si el argumento es una cadena.
(defun stringp (dato)(eq (type dato) ’STR))
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
16. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Caracter´ısticas del Lenguaje
Abstracci´on y encapsulamiento
LISP, en origen, no incluye caracter´ısticas de abstracci´on de
datos.
CLOS fue una ampliaci´on de LISP con orientaci´on de objetos.
Caracter´ısticas:
• Herencia m´ultiple.
• Funciones gen´erica.
• Metaclases y metaobjetos.
• T´ecnica de creaci´on e inicializaci´on de objetos que permite
control del proceso por parte del usuario.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
17. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Funciones en LISP
Aritm´eticas
+, -, *, /: Suma, resta, multiplicaci´on y divisi´on
EJEMPLO: (+ (* 2 3) 5)
1+, 1- : Incrementa/Decrementa en uno el valor.
EJEMPLO: (1+ 9)
max, min : Devuelve el valor m´aximo de una lista
EJEMPLO: (max 23 4 5 234 654)
float: Devuelve el valor en coma flotante
EJEMPLO: (float ( 22 / 7))
round: redondea un valor al entero m´as cercano
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
18. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Funciones en LISP
Aritm´eticas
expt: calcula potencias elevando su primer argumento a su
segundo
EJEMPLO: (expt 2 3)
sqrt: calcula raices cuadradas
EJEMPLO: (sqrt 9)
abs: calcula el valor absoluto
EJEMPLO: (abs -3)
random: calcular un n´umero aleatorio de 0 a N-1
EJEMPLO: (random 5)
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
19. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Funciones en LISP
Funciones de entrada y salida
print, format: son operaciones de salida de texto.
read: es una operaci´on de lectura de texto.
read-line: absorve caracteres hasta donde aparece un fin de
archivo.
read-char: lee un car´acter
open: permite escribir en archivos
eval: es una operaci´on que lee y eval´ua.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
20. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
Compiladores de LISP
Los mas utilizados
• GNU Common Lisp, (Software libre)
• Allegro Common Lisp, (Software propietario)
• CMU Common Lisp, (Software libre)
• CLISP, Una implementaci´on de Common Lisp , (Software
libre)
• OpenMCL Common lisp para Macintosh , (Software libre)
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
21. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
LISP EN IA
Como nace LA IA CON LISP
El momento en el que se comienza a utilizar el t´ermino y este
se populariza es en 1956, cuando John McCarthy organiza el
Dartmouth Summer Research Project on Artificial Intelligence.
Los a˜nos sucesivos a ese verano fueron especialmente
fruct´ıferos: Newell, Simon y Shaw escribir´ıan el “Logic
Theorist” y el “General Problem Solver” y John Mc Carthy
crear´ıa Lisp y escribir´ıa el art´ıculo “Programs with Common
Sense”.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
22. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
LISP EN IA
LISP LENGUAJE DE ALTO NIVEL
Lisp era el lenguaje de alto nivel que necesitaban en esos
tiempos; fue el primer lenguaje en implementar programaci´on
funcional, acercando las matem´aticas al lenguaje; permite
entender el lenguaje hasta el nivel del int´erprete y es
extensible, permitiendo crear nuevos paradigmas de
programaci´on en el lenguaje.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
23. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
LISP EN IA
LISP y PROLOG
Hasta 1971 no se inventar´ıa Prolog, que se usar´ıa sobre todo
en combinaci´on con Lisp, en los sistemas basados en reglas,
debido a sus facilidades para el encadenamiento hacia Atr´as,
entre otras cosas. As´ı es que hist´oricamente Lisp ha estado
asociado a la inteligencia artificial y viceversa.
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
24. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
EJEMPLOS
Funciones
Crear una funci´on que dada una lista de como resultado una
nueva lista pero solo con el primer y ´ultimo elemento de la
lista original.
SOLUCI´ON:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
25. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
EJEMPLOS
Funcion Recursiva
Crear una funci´on recursiva que dada una lista como
par´ametro retorne la sumatoria de todos sus elementos.
SOLUCI´ON:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
26. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
EJEMPLOS
Funci´on para matrices
Crear una funci´on que permita realizar la suma de matrices.
SOLUCI´ON:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
27. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
EJEMPLOS
Funci´on para listas
Crear una funci´on en LISP que permita realizar suma de listas
pares
SOLUCI´ON:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
28. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
EJEMPLOS
Eliminar el en´esimo termino de una lista
SOLUCI´ON:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP
30. Introducci´on
Caracter´ısticas del Lenguaje
Funciones en LISP
Compiladores de LISP
LISP EN IA
EJEMPLOS
EJEMPLOS
LAS TORRES DE HANOI
Definicion de funcion torres de hanoi:
Omar Quito, Fernado Sumba Universidad de Cuenca LISP