Applying functional programing concepts to our OOP applications to build more resilient applications. But everything comes at a cost.