Objetivos
El paradigma de programación
funcional es uno de los fundamentales
entre los llamados de programación
declarativa. Como tal, permite aunar los componentes de
especificación y programación en las tareas de solución
automática de problemas.
Los lenguajes funcionales ofrecen al programador un buen número de
recursos expresivos que permiten resolver problemas
complejos mediante programas
pequeños y robustos. Entre ellos cabe destacar: un sistema de tipos
polimórficos que permite definir una amplia variedad de estructuras de
datos de uso genérico, la posibilidad de definir funciones que
aceptan otras funciones como argumentos y devuelven funciones como resultado,
facilidades para definir y manipular estructuras de datos infinitas, un modelo
computacional simple, claro y bien fundamentado, etc. De
no menor importancia es la posibilidad de razonar, de forma sencilla, acerca de
las propiedades de los programas: su corrección, su eficacia, su
comportamiento en ejecución, ... Esto permite optimizar las tareas de
implementación de los lenguajes funcionales.
Podemos encontrar, en casi todos los lenguajes
de programación
funcional, un núcleo común de conceptos y técnicas
asentado sobre bases firmemente establecidas. En esta asignatura estudiamos
los fundamentos de la programación
funcional y su utilización en la definición
de implementaciones correctas y eficientes de los lenguajes de
programación que se enmarcan en este paradigma.
Temario
Prácticas
Las prácticas persiguen consolidar el conocimiento
adquirido sobre los lenguajes funcionales y sus peculiaridades expresivas.
Consistirán en la realización de pequeños programas
que permitan bosquejar las posibilidades de aplicación de estos lenguajes
a problemas de actualidad tales como el desarrollo de aplicaciones
multimedia que incluyan gráficos, animaciones, música, etc.
El entorno de programación utilizado es Hugs, una implementacion de Haskell sobre Windows95.
Evaluación
Examen sobre los contenidos teóricos de la asignatura y
valoración de las prácticas realizadas. Trabajos personales.
Bibliografía
[Bir00] R. Bird. Introducción a la Programación Funcional con Haskell. Prentice-Hall, 2000.
[Dav92] A.J.T. Davie. An Introduction to Functional Programming Systems Using Haskell. Cambridge University Press, 1992.
[Hud00] P. Hudak. The Haskell School of Expression. Learning functional programming through multimedia. Cambridge University Press, 2000.
[PE93] R. Plasmeijer and M. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison-Wesley, 1993.
[Pey87] S.L. Peyton-Jones. The implementation of Functional Programming Languages. Prentice-Hall, 1987.
[Rea93] C. Reade. Elements of Functional Programming. Addison-Wesley, 1993.
[Tho99] S. Thompson.
Haskell. The Craft of Functional
Programming. Addison-Wesley, 1999.
URLs de interés
Programación funcional en la red:
Otras URLs de interés
Grupo de programación funcional
del RWTH Aachen (Alemania)
Grupo de programación funcional
de la Universidad de Glasgow (Reino Unido)
Programación funcional
en la Universidad Complutense de Madrid
Programación funcional
en la Universidad de Málaga
Grupo de programación
funcional de la Universidad de Nimega (Holanda)
Grupo de programación
funcional de la Universidad de Yale (EEUU)