Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Introducción a LISP 
Sergio Jiménez Celorrio 
Departamento Ingeniería Informática – UC3M
Introducción 
 List Processing 
 Desarrollado en 1958, en el MIT por John McCarthy 
 Lenguaje mas popular en IA 
– Decl...
Tipos de datos 
 Listas, Elemento Fundamental del Lenguaje 
– (funcion x y z) 
– (print “Hola Mundo”) 
 Átomos 
– Símbol...
Operadores Básicos 
 Numéricos: 
– Suma 
 (+ 1 2) 
 (+ 1 2 3 4) 
– Resta 
 (- 4 2) 
 (- 10 2 2 2) 
– Producto 
 (* 3...
Evaluación de una expresión LISP (I) 
 Directamente en el prompt del intérprete 
 Desde un fichero 
 (load “prueba.lisp...
Evaluación de una expresión LISP (II) 
 ‘ y quote impide la evaluación de una expresión: 
 (+ 3 5) 
 ‘(+ 3 5) 
 (quote...
Variables 
 Inicializaciones 
 (defvar *contador* 1) 
 Cambiando el valor a una variable 
 (setf *contador* 2) 
 Vari...
Condiciones 
 (if (= *a* *b*) (print “hola”) (print “adios”)) 
 (when (= *a* *b*) (print “hola”)) 
– Equivalente a (if (...
Relaciones de Igualdad 
 EQ (el más específico), compara si dos variables apuntan al mismo objeto. 
 (eq ‘(a b c) ‘(a b ...
Bucles 
 (dotimes (i 3) (print i)) 
 (dolist (i ‘(0 1 2)) (print i)) 
 (setf *i* 0) 
(loop (when (= *i* 3) (return)) 
(...
Creación de Listas 
 (setf *lista* ‘(1 2 3 4 5)) 
 (setf *lista* (list 1 2 3 4 5))
Funciones Básicas de Manejo de 
Listas 
 (car *lista*) = (first *lista*) = (nth 0 *lista*) 
 (rest *lista*) = (cdr *list...
Declaración de Funciones de Usuario 
 (defun nombre (args) “descripcion” (expresión)) 
– (defun mi-funcion (lista) 
“obti...
Apply y Funcall 
 Permiten aplicar una función a un conjunto 
de datos 
– Apply (apply #’+ ‘(2 3)) 
– Funcall: (funcall #...
Mapcar 
 Permite aplicar una función a cada uno de 
los elementos de una lista. 
(mapcar #’list ‘(1 2 3 4)) 
(mapcar #’+ ...
Funciones Lambda 
 Permite definir funciones en tiempo de ejecución 
– Muy útil para las funciones tipo map o para defini...
Entrada / Salida 
 Lectura sobre entrada estándar 
 (setf *respuesta* (read)) 
 Escritura sobre salida estándar 
 (pri...
Buenos hábitos de programación 
 Introducir comentarios 
– ; para comentar una línea 
– #| para comentar 
Varias líneas |...
Libros 
 LISP : el lenguaje de la inteligencia artificial / 
A.A. Berk 
 AutoLISP versión 12 / José Antonio Tajadura 
Za...
Web 
 Referencia Funciones Lisp 
– http://www.lispworks.com/documentation/HyperSpec/Front/index.htm
Upcoming SlideShare
Loading in …5
×

Curso lisp

575 views

Published on

Lenguaje Lisp

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Curso lisp

  1. 1. Introducción a LISP Sergio Jiménez Celorrio Departamento Ingeniería Informática – UC3M
  2. 2. Introducción  List Processing  Desarrollado en 1958, en el MIT por John McCarthy  Lenguaje mas popular en IA – Declarativo – Alto Nivel  Diferentes Intérpretes – CLISP, Allegro, CMUCL, …  Aplicaciones – Emacs, Autocad…
  3. 3. Tipos de datos  Listas, Elemento Fundamental del Lenguaje – (funcion x y z) – (print “Hola Mundo”)  Átomos – Símbolos: var1, contador, … – Valores Lógicos: t, nil – Números: 3, 3.001 – Strings: “Hola mundo”  Otros: – arrays, vectores, tablas hash,… – Estructuras y Clases definidas por el usuario
  4. 4. Operadores Básicos  Numéricos: – Suma  (+ 1 2)  (+ 1 2 3 4) – Resta  (- 4 2)  (- 10 2 2 2) – Producto  (* 3 2)  (* 2 2 2 2)  Lógicos: – And  (and t nil)  (and 1 2 3) – Or  (or t nil)  (or 1 2 3) – Not  (not nil)  (not 1),  (not “hola”)
  5. 5. Evaluación de una expresión LISP (I)  Directamente en el prompt del intérprete  Desde un fichero  (load “prueba.lisp”)
  6. 6. Evaluación de una expresión LISP (II)  ‘ y quote impide la evaluación de una expresión:  (+ 3 5)  ‘(+ 3 5)  (quote (+ 3 5))  eval evalúa una expresión dos veces  (eval (quote (+ 3 5)))  (eval ‘(+ 3 5))
  7. 7. Variables  Inicializaciones  (defvar *contador* 1)  Cambiando el valor a una variable  (setf *contador* 2)  Variables locales  (let ((contador 1)) (print contador))  (let ((contador 1)) (setf contador 2) (print contador))
  8. 8. Condiciones  (if (= *a* *b*) (print “hola”) (print “adios”))  (when (= *a* *b*) (print “hola”)) – Equivalente a (if (= *a* *b*) (print “hola”))  (unless (= *a* *b*) (print “hola”)) – Equivalente a (if (not (= *a* *b*)) (print “hola”))  (Cond ((= *a* *b*) (print “uno”)) ((> *a* *b*) (print “dos”)) (t (print “tres”)))
  9. 9. Relaciones de Igualdad  EQ (el más específico), compara si dos variables apuntan al mismo objeto.  (eq ‘(a b c) ‘(a b c)) NIL  (setf x 1) (setf y x) (eq x y) T  EQL como EQ pero también compara números si son del mismo tipo o para caracteres  (eql x y) T  (eql 3 3) T  (eql 3.0 3) NIL  EQUAL (El más general)  (equal ‘(a b c) ‘(a b c )) T  (equal 3.0 3) T  (equal “hola” “HOLA”) NIL  EQUALP Como EQUAL pero compara cadenas en mayúsculas y minúsculas  (equalp “hola” “HOLA”) T  Relaciones numéricas: = <, >, <=, >=
  10. 10. Bucles  (dotimes (i 3) (print i))  (dolist (i ‘(0 1 2)) (print i))  (setf *i* 0) (loop (when (= *i* 3) (return)) (print *i*) (setf *i* (+ *i* 1)))
  11. 11. Creación de Listas  (setf *lista* ‘(1 2 3 4 5))  (setf *lista* (list 1 2 3 4 5))
  12. 12. Funciones Básicas de Manejo de Listas  (car *lista*) = (first *lista*) = (nth 0 *lista*)  (rest *lista*) = (cdr *lista*)  (last *lista*) = (list (nth (- (length lista) 1) *lista*))  (push 8 *lista*)  (pop *lista*)  (cons 1 ‘(2 3 4 5))  (append ‘(1 2) ‘(3 4 5))  (member 1 ‘(3 4 1 5 6))  (sort ‘(3 2 1) ‘<)  (remove 1 ‘(3 4 1 5 6))  (length ‘(3 2 5))
  13. 13. Declaración de Funciones de Usuario  (defun nombre (args) “descripcion” (expresión)) – (defun mi-funcion (lista) “obtiene el primer elemento del argumento lista” (car lista))  Devuelven el valor de la última expresión
  14. 14. Apply y Funcall  Permiten aplicar una función a un conjunto de datos – Apply (apply #’+ ‘(2 3)) – Funcall: (funcall #’+ 2 3)
  15. 15. Mapcar  Permite aplicar una función a cada uno de los elementos de una lista. (mapcar #’list ‘(1 2 3 4)) (mapcar #’+ ‘(1 2 3 4)’(10 20 30 40))
  16. 16. Funciones Lambda  Permite definir funciones en tiempo de ejecución – Muy útil para las funciones tipo map o para definir funciones de Test  (mapcar #’(lambda (x) (format t “El doble de ~a es ~a~&“ x (* 2 x))) ‘(1 2 3))  (member 2 ‘((1 2) (3 4) (5 6)) :test #’(lambda (x y) (equal x (second y))))
  17. 17. Entrada / Salida  Lectura sobre entrada estándar  (setf *respuesta* (read))  Escritura sobre salida estándar  (print “Hola mundo”)  Salida con formato (format t literal argumentos) – El literal puede indicar: ~% nueva línea ~d número ~a carácter  (format t “el cuadrado de ~d es ~d ~&” 3 (* 3 3))  Abrir un fichero.  (setq fichero (open “nombre-fichero” :direction :input))  Escribir en un fichero.  (format fichero “el cuadrado de ~d es ~d ~&” 3 (* 3 3))  Cerrar fichero  (close fichero)
  18. 18. Buenos hábitos de programación  Introducir comentarios – ; para comentar una línea – #| para comentar Varias líneas |#  Nombres de variables y funciones descriptivos  Funciones con pocas líneas y cortas  Utilice editor que resalte emparejado de paréntesis y con sangría automática – (i.e. emacs o xemacs)  Use cond en lugar de ifs anidados  Variables globales comiencen y acaben con * – *variable1*  Utilice lógica positiva al dar nombre a las funciones y predicados: que devuelvan t si es cierto. – (numberp 5)
  19. 19. Libros  LISP : el lenguaje de la inteligencia artificial / A.A. Berk  AutoLISP versión 12 / José Antonio Tajadura Zapirain, Javier López Fernández  LISP / Patrick Henry Winston, Berthold Klaus Paul Horn  Common LISP : the language. Steele, Guy L.
  20. 20. Web  Referencia Funciones Lisp – http://www.lispworks.com/documentation/HyperSpec/Front/index.htm

×