Este artículo requiere un conocimiento previo de Haskell, o al menos,
de otro lenguaje de programación funcional. Puedes consultar
nuestra introducción a Haskell
con recursos para iniciarte en el lenguaje.
Por otro lado, para la segunda parte del artículo es recomendable
conocimiento previo sobre teoría de categorías. Aun así, no es
necesaria para leer la primera parte del artículo, donde hablamos
de mónadas sin hacer ninguna referencia explícita a la teoría de
categorías. Si quieres leer sobre ese tema, puedes consultar nuestros apuntes
de introducción a teoría de categorías.
Motivación para las mónadas
Mónadas en Haskell
Imaginemos que necesitamos controlar cuando una función interna
devuelve un error, o cuando usa un estado que debe ser pasado al resto
de funciones. Cuando trabajamos con programación funcional pura,
debemos devolver explícitamente el error (señalar cómo va a tratarlo
cada función) o pasar el estado como argumento a cada una de las
funciones; así que una solución sería modificar cada una de las
funciones que usamos para que tenga en cuenta ese estado o ese caso de
error, pero esto añadiría mucha complejidad innecesaria a nuestro
código. La estructura de mónada simplifica esta escritura.
Emacs es un editor de texto
construido sobre un intérprete del lenguaje
Elisp para hacerlo extensible. Cada acción
del editor constituye un comando sobre el intérprete, por lo que podemos reescribir sus
comandos o crear nuevos comandos simplemente programando sobre el intérprete.
Emacs sirve como IDE para la mayoría de lenguajes de programación, como
editor para programación literaria y ciencia reproducible; se integra con git y
con el sistema de archivos, y tiene extensiones disponibles para usarse como
aplicación para organizar listas de tareas, leer el correo o servir como hoja
de cálculo.
I use Emacs, which might be thought of as a thermonuclear word processor.
– Neal Stephenson, In the Beginning… was the command line.
En este artículo haré una referencia breve a todo lo que me ha ido sirviendo
para aprender Emacs mientras enlazo a fuentes que tratan cada uno de los temas
más extensamente. Como recursos generales para aprender Emacs, puedo recomendar:
.Emacs Tutorials
de jekor, explican todo lo necesario para aprender
Emacs en 10 videotutoriales que pueden seguirse progresivamente.
Emacs Meetups
de Thoughtbot, que profundizan sobre temas concretos de uso
de Emacs.
Emacs Rocks, vídeos breves sobre casos concretos de uso de Emacs.
Emacs wiki, una wiki que documenta
todo lo relacionado con Emacs.
sachachua.com,
donde se hace referencia periódicamente a noticias
de Emacs, y tiene escritas hojas de referencia de atajos de teclado de Emacs.
C’est la z, otro blog en el que se tratan temas relacionados con Emacs.
Presentamos el código fuente de un libro completo de Cálculo escrito por D. Francisco Javier Pérez González, profesor
del departamento de Análisis Matemático de la Universidad de Granada, que sirve como una maravillosa
introducción al Análisis y al razonamiento matemático. Los apuntes están escritos en Latex y licenciados en
Creative Commons BY-NC-SA.
Queremos agradecérselos a D. Javier Pérez,
que nos proporcionó el código de sus apuntes para que pudiésemos publicarlo, y que ha ayudado a hacer del
conocimiento algo libre y accesible a sus alumnos. En su página web
se puede encontrar mucho más material dedicado al análisis matemático, como series de
Fourier, variable compleja o análisis en .
Los sistemas de tipos tienen su utilidad en las matemáticas. Sirven para modelar
una fundamentación de las matemáticas distinta de la usual fundamentación
conjuntista; y tienen varias aplicaciones interesantes en lenguajes funcionales
y asistentes de demostración. En particular, sobre los tipos se puede definir un
álgebra y se pueden representar sistemas lógicos. Vamos a tratar esas
aplicaciones referenciando en cada caso artículos donde se exponen en profundidad.
Inducción estructural
La inducción estructural es una generalización de la inducción usual sobre los
naturales que la extiende a otras estructuras representables como tipos de un
lenguaje funcional. Sobre la inducción estructural hemos escrito previamente en el blog una
introducción: