See my new blog, Asynchronous API in C++ and the Continuation Monad. It’s an explanation why functional programming ideas are important in designing imperative languages.