OOP is a tool designed for a certain class of problems - problems which are adequately modeled by message-passing entities. A desktop environment is the perfect example.
FP is a tool well-suited to other problems. If I wanted a system to manage facts about some domain, and change those facts based on outside stimuli, I would be inclined towards a purely functional system operating on immutable data structures. Think about the proliferation of redux in web development and you'll see this is exactly the model of user interaction with a single-page web application.
If I wanted a system that closely interacted with a number of chips/hardware components with extremely fine-grained control, I would use an imperative approach.
All these paradigms have their purpose. It's when programmers get dogmatic about a certain paradigm where insane levels of complexity arise. Know your tools, and use them appropriately.