James Hague has an interesting series of posts about functional programming, the latest of which, "Functional Programming Doesn't Work (and what to do about it)" starts with:
Read suddenly and in isolation, this may be easy to misinterpret, so I suggest first reading some past articles which have led to this point.
I agree with his thesis: eliminating mutable state, side effects, and/or global variables doesn't always make programs cleaner. I'll know that we have a working theory of program complexity (as opposed to algorithmic complexity) when such recommendations can be prescriptive.