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