Wednesday 

Room 1 

15:00 - 16:00 

(UTC+02

Talk (60 min)

Monadic Operations in Modern C++: A Practical Approach

In C++23 we have std::optional and std::expected along with the "monadic" operations that can be used on the objects of these types. By chaining the computations, these abstractions allow you to manipulate the underlying values using less boilerplate code. In addition, we have a range library for processing collections of elements in a similar manner.

C++
Technique

These topics have been quite popular in the C++ community for the last five years or so. However, many of them are focused on theoretical parts, have only small non-related examples, or even use other programming languages to illustrate the ideas.

This talk is prepared based on more than one year of using functional programming approaches for developing one of the commercial internal libraries our team is working on. I’m going to share this experience with the audience. We’ll talk about API design in general, spitting between pure and impure context, and the pros and cons of using “optional” and “expected”. There will be real code examples and some useful tips.

This talk will be useful for software engineers who want to start using monadic operations in their everyday routine or for those who already do it (at least partially) and want to learn more about that.

Vitaly Fanaskov

Vitaly is a senior software engineer at reMarkable. He has been designing and developing software using C++ and some other languages for over 10 years. Primary areas of interest are design and development of frameworks and libraries, modern programming languages, and functional programming.
Vitaly holds a PhD in Computer Science from the Moscow State Mining University.