I don't know why I continue to engage you, but...
I really like this Haskell group-think here.
There is no group-think here. You made your argument. Nobody cares.
Where we stand now: you think Haskell is unusable because of the three points you mention. I disagree. That is all we have. You could be doing the community a huge favor by pointing these things out, and "we" are just to dumb to realize you're right. But probably not. These are just your pet annoyances that you feel like talking about.
(I have my own pet annoyances, especially with libraries that unnecessarily use IO when they could use ST or even hide the IO completely. Notice how I don't whine about this stuff, but rather simply try to avoid this in my own code.)
You don't like Haskell or OCaml, clearly. So don't use them! (But realize that nobody really cares.)
And drawing an arbitrary line where purity can begin and end does not change the definition of side effects.
The point is you write code as though there are no side effects. There are side effects, but they are hidden from the programmer by the runtime system and by the libraries in use.
Abstraction is the key to staying sane as a programmer.