Programa de estudio. || Prácticas: Práctica 1. Introducción a la sintaxis de Haskell y al ambiente Hugs | Práctica 2. Expresiones y valores. Tipos. Notación Lambda | Práctica 3. Currificación. Alto orden. Reducción. Ordenes de evaluación | Práctica 4. Demostraciones. Propiedades de programas: terminación, equivalencia. Inducción. Recursión | Práctica 5. Tipos algebraicos. Pattern matching. Listas | Práctica 6. Sinónimos de tipos. Tipos algebraicos recursivos. Árboles | Práctica 7. Funciones de alto orden sobre listas | Práctica 8. Tipos abstractos de datos y módulos | Práctica 9. Patrones genéricos de recursión. Funciones sobre árboles | Práctica 10. Lazy evaluation. Estructuras infinitas. Elementos parciales. Principios de dualidad | Práctica 11. Derivación y síntesis de programas | Práctica 12. Cálculo: programación con cálculo, sustitución, equivalencia, reducción | Práctica 13. Práctica integradora.