Using Monads in C++ to Solve Constraints: Refactoring | Hacker News Reader