Programación Declarativa
La programación funcional es un estilo de programación en el que los programas están hechos de funciones matemáticas. Este estilo ofrece muchísimas ventajas:
- Los programas escritos de forma funcional son cortos y fáciles de mantener.
- Es un estilo fácil de aprender.
- Demostrar que un programa funcional es correcto es casi inmediato.
- Muchas veces las ideas se plasman directamente a código funcional.
En este curso aprenderemos a programar de manera funcional en el lenguaje Haskell y veremos varios temas relacionados como:
- Cálculo lambda.
- Algoritmos imperativos con estilo puramente funcional
- Teoría de las categorías.
- Mónadas en la programación funcional.
- Programación funcional en paralelo.
- Y más...
La bibliografía básica es la siguiente:
- Bird, R., & Wadler, P. (1988). Introduction to functional programming (Vol. 1). New York: Prentice Hall.
- Hankin, Chris. "Lambda Calculi: a guide for the perplexed." (1994).
- Selinger, Peter. "Lecture notes on the lambda calculus." arXiv preprint arXiv:0804.3434 (2008).
- Hutton, G. (2016). Programming in Haskell. Cambridge University Press.
- Pierce, B. C. (1991). Basic category theory for computer scientists. MIT press.
- Rabhi, F., & Lapalme, G. (1999). Algorithms; A Functional Programming Approach. Addison-Wesley Longman Publishing Co., Inc..
- O'Sullivan, B., Goerzen, J., & Stewart, D. B. (2008). Real world haskell: Code you can believe in. " O'Reilly Media, Inc.".
- http://learnyouahaskell.com
- https://en.wikibooks.org/wiki/Haskell
- https://www.yesodweb.com
Cenobio Moisés Vázquez Reyes
spidermoy@ciencias.unam.mx
Enrique Antonio Bernal Cedillo
enrique_bernal@ciencias.unam.mx)
"The best programs are written so that computing machines can perform them quickly and so that human beings can understand them clearly. A programmer is ideally an essayist who works with traditional aesthetic and literary forms as well as mathematical concepts, to communicate the way that an algorithm works and to convince a reader that the results will be correct."
—Donald Knuth