IMHO, it's not so much that as the ASCII operator galore. $, <*>, the horrible lambda syntax... Sometimes it looks an opinionated Perl.
Haskell does have type classes, which do allow overloading, even of operators, but the type class uniquely determines the type of the operator - and there can be only one definition of any operator in scope.
Also, you can just define as many new operators as you like.
For these reasons, you can't have the madness of operator<< in C++, or whatever it is that Perl does with the same operator doing 5 completely different things depending on context.
Nobody said it did. People said that it has its own brand of problems with operators looking something like >>+@*<>> peppering your code.
this is exactly the problem
Do you mean user-defined operators, or do you mean operators whose type has a typeclass context?