De 0 a 100 (Taller): mónadas en C++14


Details
Las mónadas son un patrón de diseño nacido en el mundo de la programación funcional, y en Haskell más concretamente, para el modelado de efectos laterales complejos de integrar en entornos funcionales, como la entrada/salida de ficheros, manejo de excepciones, etc. Recientemente las mónadas están apareciendo en lenguajes imperativos como C++, donde se están aprovechando para organizar algunas propuestas para el estándar como std::expected o extensiones a la interfaz de std::future. Desafortunadamente, el fundamento teórico de las mónadas está bastante alejado del bagaje conceptual típico de un programador de C++, por lo que este patrón de diseño está rodeado de cierta aura de misterio e impenetrabilidad.
Vamos a hacer un taller práctico para jugar con los conceptos monádicos en C++. La teoría se explica en la presentación de una charla que di en el último evento using std::cpp
En el taller implementaremos las siguientes ideas:
• Mónada Maybe (basada en boost::optional)
• Ejemplo de mónada Maybe: std:.expected
• Mónada List
• Monadic lifting
• Mónada Continuation
• Ejemplo de mónada Continuation: extensiones a std::future
• Ejemplo de mónada Continuation: Boost.Hana
Si tenemos éxito, al final del taller, aparte de pasar un rato divertido, tendremos una mejor comprensión de qué son las mónadas, e, incluso, de para qué sirven :-)
Para hacer los ejercicios los asistentes tienen que llevar un ordenador con un compilador C++14 y nada más. Una posibilidad es usar el entorno online Coliru (http://stacked-crooked.com/ ), si prefieres un entorno local recomiendo GCC 4.9.0 o Clang 3.4.
IMPORTANTE: Antes del taller va a ser muy útil saber qué asistentes estuvieron en la charla de mónadas de using std::cpp 2014 y quiénes no, para calibrar mejor el nivel de familiaridad previa con los conceptos.
Joaquín Mª López Muñoz es el autor de Boost.MultiIndex y Boost.Flyweight y miembro del comité español de estandarización de C++.

De 0 a 100 (Taller): mónadas en C++14