Functional programming is all about composing functions. If the output of one and the input of the other line up exactly, that's trivial. If they don't, you need some way to apply a function over some sort of structure data in the way you want. Monads are one way you can do that, but just like there are many different kinds of structures, there are also many different ways to compose functions.
In this talk, we'll look at the more obscure functional composition patterns and cover applicatives, alternatives, traversables, and many more. We'll talk about the different ways you can combine N values into one, covariant and contravariant composition, functional references as views on steroids. Along the way, we'll discover that these obscure sounding patterns are actually everywhere in std::ranges and std::execution, and how we can use them to improve your declarative compositions.
N
std::ranges
std::execution
And don't worry, you won't need to know any Haskell.
View Slides
Jonathan is a Software Engineer at LSEG. There he develops low-latency market data feed handlers in C++ for high-frequency trading applications. Previously, he maintained think-cell’s core C++ libraries built around a custom range implementation.
He is also the chair of the std::ranges study group in the C++ standardization committee, a frequent speaker at conferences and universities, and the author of multiple open-source C++ libraries.