With Haskell came new principles which had immediately obvious value - "is your function well-defined over all possible inputs?" and "does it always produce the same output given the same input?".
I later 'got' that first set of principles, but I mostly disagree with them.
My day job has always involved looking at exceptions and logs, figuring out "how something went wrong", and then trying to fix it. Guess which set of principles helps me make software that typically "just works".
Obviously, Haskell being an academic language helps here, since novel ideas lead to papers and boring old ideas don't.
[0]: That is statically typed lazy functional programming.
basically every code base out there could use more functional effort - simple data structures and simple functions that operate on these to return a brand new structure.