[Haskell-cafe] How to avoid CPP (Was: Monad of no `return` Proposal (MRP): Moving `return` out of `Monad`)