Programación declarativa (2009-10)
Este curso es una introducción a la programación declarativa en su doble aspecto: programación funcional y programación lógica.
Es una asignatura obligatoria de tercer curso de la Ingeniería informática de la Universidad de Sevilla.
Temas
- 1ª parte: Programación funcional
- Tema 1: Introducción a la programación funcional.
- Tema 2: Introducción a la programación con Haskell.
- Tema 3: Tipos y clases.
- Tema 4: Definición de funciones.
- Tema 5: Definiciones de listas por comprensión.
- Tema 6: Funciones recursivas.
- Tema 7: Razonamiento sobre programas.
- Tema 8: Funciones de orden superior.
- Tema 9: Declaraciones de tipos y clases.
- Tema 10: Evaluación perezosa.
- Tema 11: Analizadores funcionales.
- Tema 12: Programas interactivos.
- Tema 13: Aplicaciones de programación funcional.
- 2ª parte: Programación lógica
Prácticas
Exámenes
- Examen de laboratorio:
- Examen parcial:
- Examen final.
Libros con los temas y ejercicios resueltos
- En Temas de "Programación funcional" (2009-10) se encuentran las transparencias de todos los temas de la primera parte del curso en forma de libro.
- En Introducción a la programación lógica con Prolog se encuentran los apuntes de la segunda parte del curso en forma de libro.
- En Ejercicios de programación funcional con Haskell se encuentran resueltos los ejercicios de la primera parte del curso.
- En Ejercicios de programación lógica con Prolog encuentran resueltos los ejercicios de la segunda parte del curso.
Bibliografía
Programación funcional con Haskell
- R. Bird. Introduction to functional programming using Haskell. (Prentice-Hall, 1998).
- H.C. Cunningham. Notes on functional programming with Haskell.
- H. Daume III et al. Yet another Haskell tutorial.
- J. Fokker. Programación funcional.
- J. Gallardo, P. Gutiérrez y B. Ruiz. Una introducción agradable a Haskell versión 98 (es una traducción de P. Hudak, J. Peterson y J. Fasel A Gentle Introduction to Haskell, Version 98).
- M. Nic. Haskell reference.
- B. Pope y A. van IJzendoorn. A tour of the Haskell Prelude (Basic functions).
- B.C. Ruiz, F. Gutiérrez, P. Guerrero, y J. Gallardo. Razonando con Haskell (Un curso sobre programación funcional). (Thompson, 2004).
- S. Thompson. Haskell: The craft of functional programming. (Addison-Wesley, 1999).
- A. van IJzendoorn. Tour of the Haskell syntax.
- The Haskell wikibook.
- H-99: Ninety-nine Haskell problems.
- Prelude.
- Haskell hierarchical libraries.
- Haskell Quiz
Programación lógica con Prolog
- J.A. Alonso. Introducción a la programación lógica con Prolog.
- R. Barták. On-line guide to Prolog programming.
- P. Blackburn, J. Bos y K. Striegnitz. Learn Prolog now!
- I. Bratko. Prolog programming for artificial intelligence (3 ed.). (Addison Wesley, 2001).
- W.F. Clocksin y C.S. Mellish. Programming in Prolog. (Springer, 2003).
- B. Demoen, P.-L. Nguyen, T. Schrijvers y R. Tronçon. The Prolog programming contests.
- J.R. Fisher. Prolog tutorial.
- W. Hett P-99: Ninety-nine Prolog problems.
- U. Nilsson y J. Maluszynski Logic, programming and Prolog.
- SWI-Prolog reference manual.
Sistemas
Los sitios oficiales de los sistemas son los siguientes
- GHC Haskell
- Emacs
- Modo Haskell para Emacs.
- SWI Prolog
- SldDraw: Herramienta para representar árboles SLD.
Se pueden instalar los sistemas en Ubuntu con el gestor de paquetes Synaptic, buscando los paquetes emacs, emacs22 y haskell-mode. Además, copiar en el directorio del usuario el fichero de configuración de emacs.