Haskell's main problem is that it is over-zealous, and built on axioms that make it a poor fit for real people writing real code. Everything else flows from that core issue. Functional purity and lazy evaluation are interesting, but when you can't toss a printf debug or log statement into a function without changing function signatures all the way up, it's not going to be popular.
Pragmatic, sloppy languages will always be more popular, because they are more forgiving.
Pragmatic, sloppy languages will always be more popular, because they are more forgiving.