Is std::ranges the best way to compose operations on ranges? What if instead of basing composition on a generalization of <iterator>, we instead based composition on a generalization of <algorithm>? What if doing this enabled us to make composition safer, more efficient, and more flexible compared to C++20 ranges? And what if we got monadic error handling as a bonus? Join us for an introduction to Rappel - a library implementing this approach! We will begin by examining the motivation for Rappel, including an in-depth analysis of its underlying semantic model, which differs from std::ranges. We will explore the tradeoffs […]