Using Monads in C++ to Solve Constraints: 1. The List Monad | Hacker News Reader