Académique Documents
Professionnel Documents
Culture Documents
Bibliografa Bsica
Bird, R. Introduccin a la Programacin Funcional con Haskell (2.ed), Prentice Hall. 1998 (traduccin en espaol: 2000) Thompson, S. Haskell.The Craft of Functional Programming (2.ed), Addison-Wesley. 1999. Home page de Haskell: http://www.haskell.org/
Temario
Tema 1. Introduccin. Lenguaje Haskell y sistema Hugs. Tema 2. T.D. simples. Definicin de funciones. Currificacin. Tema 3. Constructores de tipos. Ajuste de patrones. Polimorfa. Tema 4. Funciones sobre listas. Orden superior. Tema 5. Operadores sobrecargados. Clases de tipos. Tema 6. Tipos algebraicos. Induccin estructural. Tema 7. Tipos abstractos de datos. Mdulos. Tema 8. Evaluacin perezosa. Listas infinitas. Tema 9. Eficiencia. Estructuras cclicas. Tema 10. Programando con acciones: I/O.
3
Tema 1. Introduccin
Programacin Funcional: Consiste en construir definiciones de funciones y usar el ordenador para evaluar expresiones. Papel del programador: construir las definiciones de funciones que resuelvan un problema dado.
+
Aplicacin de una funcin? Meter argumentos/entradas 3 5
Int
Definicin de una funcin? Interior de la caja negra Ejemplo: Int doble Int Posibles definiciones: (a) doble x = x + x (b) doble x = x 2 Evaluacin correspondiente: doble 7 7+7 14 doble 7 72 14
cuadruple x = el nmero x cuadruplicado Una posible definicin: cuadruple x = doble (doble x) Interior de la caja cudruple:
doble doble
Evaluacin: cuadruple 7
doble (doble 7)
doble 14
28
7
Cmo definir rotar en trminos de las otras funciones? rotar dib = reflejoH (reflejoV dib) = (reflejoH reflejoV) dib Tambin se puede escribir directamente como: rotar = reflejoH reflejoV
Dibujo reflejoV reflejoH Dibujo
Lenguaje Haskell
Lenguaje de P.F. ms moderno y de facto estndar Su nombre se debe a Haskell Brooks Curry Basado en el -clculo Con las caractersticas usuales de la P.F. + otras: clases de tipos (sobrecarga de operaciones), sistema de mdulos, I/O mondica. Usado en universidades: primer lenguaje de programacin Usado en la industria: prototipado, diseo y verifacin de hardware. The Haskell home page es: http://www.haskell.org
13
Sistema Hugs
Hugs = Haskell Users Gofer System (Gofer = Good for equational reasoning) Implementacin de Haskell que usaremos en el laboratorio. Una sesin Hugs es similar a una calculadora poderosa: Se carga un script (guin) o fichero con definiciones de funciones (+ declaraciones + comentarios) Se le pide que evale expresiones (que usan dichas funciones) Hugs tiene adems funciones y operadores predefinidos (en el script Prelude.hs que se carga automticamente)
14