I'm not against functional languages/approaches. I just think that everything has its place, and that procedural code and nested if/then/elses are appropriate in many circumstances.
When exactly are four levels or more of nesting appropriate? This has nothing to do with functional programming, it's a matter of readability. I mean, Linux is a completely procedural codebase (with some manual OO), but even its style guide says
If you need more than 3 levels of indentation, you're screwed anyway,
and should fix your program.
Why four, or three. Why not one or five... what a silly question/statement. It's completely subjective and as far as "a matter of readability" it's far far from the worst offense.
It's not completely subjective. McConnell in Code Complete mentions studies by Chomsky and others that suggest that few people can understand more than three levels of nested ifs.
As for being far from the wort offense, well, I try to set my goals a little higher than "not the worst".
No, it's not that far from the worst offense. The hardest code I have ever had to read has always been code with ten+ levels of nesting in a big function, where I had to keep a big mental stack of what was necessarily true to be in the branch I was looking at. There is no situation on Earth where four levels of nesting couldn't be broken up into something more understandable; the only reason not to might be for the purposes of microoptimization.
As far as I know, the only worse offenses to readability are jumps or formatting your program like an IOCCC entry.
Do you actually disagree, or are you just going on? If the former, then please give an example of the right "circumstances."