My humble opinion is that the every-function-must-be-pure aspect of Haskell is the reason why Haskell won't receive mainstream success, not that that's what they're after.
It complicates things that are simple to express in an imperative language
It complicates things that are simple to express in an imperative language