functional-programming-in-cpp