I'm starting to think that different programming styles are more suited to different levels of abstraction - maybe you can program in an OO style at a high level, use functional style code for the low level implementation.
That's sort of the Erlang approach, right?
Which is generally considered an extremely pragmatic language.
I guess it all goes back to the Actor model and the origins of OO in Simula.