|
Programación Declarativa, Plan 96 (a extinguir)
|
Año Académico 2012-2013 |
Noticias
Descripción de la asignatura
Programación Declarativa es una asignatura optativa y de libre elección del
primer semestre del cuarto curso del Grado de Ingeniería Informática (plan
96).
El plan 96 está en extinción y a partir del curso académico 2012-2013
inclusive no hay docencia presencial.
El objetivo de la asignatura es iniciar a los alumnos en la programación
funcional utilizando el lenguaje Haskell.
El profesor encargado de la asignatura es Pablo Nogueira (despacho 2304,
pnogueira@fi.upm.es)
Para superar la asignatura en la convocatoria correspondiente (enero-febrero o
septiembre) los alumnos deben obtener al menos 5 puntos en el examen escrito
de la convocatoria.
Se puede utilizar cualquier tipo de material de apoyo (libros, apuntes, etc)
durante el examen. No se permite el uso de ordenadores portátiles, teléfonos
móviles, etc, pues algunas preguntas pueden versar sobre resultados de
ejecución de programas.
Temario y Material
Los alumnos deben demostrar conociemientos sobre los siguientes contenidos:
- Tipos algebraicos de datos (algebraic data types), tipos simples (deben
conocerse todos los definidos en el preludio estándar, Bool, Char,
tuplas, etc), tipos paramétricos, polimorfismo paramétrico, expresiones
de tipos, sinónimos de tipo, tipos newtype.
- Constantes literales, funciones, operadores, valores, expresiones,
definición de funciones (composición, ecuaciones con guardas, ajuste de
patrones, recursión, expresiones lambda, expresiones condicionales,
expresiones case), aplicación de funciones, aplicación parcial y
currificación (currying), evaluación de expresiones, evaluación
perezosa (non-strict, lazy) e impaciente (strict, eager), operador de
aplicación no estricto y operador de aplicación estricto, definición de
operadores y operadores predefinidos en el preludio estándar,
precedencia y asociación de operadores, seccionado (sectioning).
- Orden superior: funciones como parámetro o valor de retorno de otras
funciones.
- El tipo de dato lista [a] del preludio (apartado PreludeList)
y sus funciones principales, en particular map, zip, concat, filter,
take, takeWhile, drop, dropWhile, foldr, foldl, etc. Listas por
comprensión (list comprehensions). Definiciones de tipos de datos para
árboles binarios, construcción de la función fold para árboles
binarios, definición de listas infinitas (ejemplos en las definiciones
de repeat o iterate).
- Clases de tipos (type classes) y sobrecarga, en particular deben
dominarse las clases de tipo Eq, Ord, Enum, y Show.
- Mónadas, en particular la mónada Maybe y la IO, funciones de la mónada
IO del preludio estándar.
En www.haskell.org
se puede encontrar mucho material de apoyo, tutoriales, artículos científicos,
etc. Destacamos los siguientes libros:
- Richard Bird.
Introduction to Functional Programming using Haskell.
- Graham Hutton. Programming in Haskell.
- Paul Hudak. The Haskell School of Expression.
- Brian O'Sullivan y otros. Real World Haskell.
Se ofrecen también algunos ficheros de ejemplos: