Some tools are better than others. I'm not familiar with Haskell but can tell you that in the .NET world LINQ is bad, because it forces the melding of process components with data access logic.
Haskell has it's own warts of course, but the functional straightjacket you're forced into makes it very easy to understand the scope of a computation.