Skip to content

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

Photo of David Sánchez Falero
Hosted By
David Sánchez F. and 3 others
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

https://github.com/joaquintides/usingstdcpp2014/tree/master/Por%20fin%20entiendo%20qu%C3%A9%20son%20las%20m%C3%B3nadas

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++.

Photo of Madrid C/C++ group
Madrid C/C++
See more events
Oficinas de Tuenti
Calle Gran Via, 28, (entrada Calle Valverde, 2) · Madrid