I agree that this won't solve all bugs, maybe not even the majority. But I am convinced it solves a significant amount of bugs. Personally I find that an expressive type system can aid significantly in discovering your own misconceptions and clarifying what you intend to do.
When coding Haskell I tend to start by envisioning the type I need my program to have and then fill the code from there.
When coding Haskell I tend to start by envisioning the type I need my program to have and then fill the code from there.