We need to start discussing about OO in general. We have a generation (or two,three in internet time) that think that OO is the epitomy of software engineering. We have Haskell, Ocaml, and others that can do better
Why haven't they? Success in practice is hard to argue with. Theory can always sit in the corner, winning every debate by staying above the fray of the dirty real world, and never get much of anything done.
Please don't attempt to rebut with Real World Haskell, unless you have read the book and gone on to build a widely deployed application.