I find the combination of FP and OOP optimal. In the boiler room we have OP and on top deck FP.
Just out of curiosity; C# is very popular but I don't hear all that much about F#.
I love the elegance of FP too, quite often mimic it in a small scale like Fluent Methods. Most of my experience it was OOP and SOLID for hottest bits (incl. data structures, tests, etc) as well. Business logic on MVC (and flavours) or DDD for large monoliths. I have seen some unsuccessful and very confusing implementations with functional approach, it is really easy to get things all around the house with it when designing framework. The code was very easy to read at the top level but number of Easter eggs that were hidden under those nicely named methods was mind blowing. But I still like FP and want use it, specially try to play with F#.
I do design everything now with Microservices architecture in mind (containerisation and orchestration) to avoid scary hybrids that can be introduced by developers with different styles (functional, solid). The main benefits I see are:
1) fun and diversity (experienced developers need it, want functional, here we go: service 1, 2, 3 pure F#) - can implement any service on any language or platform. Python, C++, F#, C#, C, Matlab, OOP, SOLID, functional, AI, ML, Linux, Win, Virtual, bare metal or whatever, as long as it satisfies requirements. That helps to keep developers' eyes peeled and most importantly it allows experts in a different subjects to contribute to the system independently.
2) versioning - this is most important. One can increase the version of the service and have both, old and new (or N), versions running until migration to the new version is complete. I have been extracting Microservices out of Monolith in the past and it works pretty well especially under DDD architecture.
In my current project I have 3 containers: PDE (Closed form prices), MCS and QuantLib accessible via WebAPI to the clients such as SPA, WPF, Excel or Python. Each client can use them individually or parts of each. Each container will evolve independently and old versions will be online until they've been used by one of the clients. I would like to add ML container (python) and train it to predict (for instance) when system is likely to crash. What I've got: C#, C++, Python, TypeScript, XAML and all of that can evolve relatively independently.