The case for typeclasses: http://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-retrospective/ECOOP-July09.pdf (starting from slide 19) Compare the desugaring of typeclasses with other desugaring: http://www.haskellforall.com/2014/10/how-to-desugar-haskell-code.html This slide deck poses many research questions; many developments since then, but the gist of these questions remains: OOP's way of implementing polymorphism dispatch-by-value, as opposed to Haskell's dispatch-by-type (slides 37--40) has its strong points.