Type classes vs. ML polymorphism
ML polymorphism simple with warts
- equality-bounded polymorphism
- overloaded operators block some kinds of polymorphism
Haskell type classes subsume and unify unbounded, equality-bounded, and general bounded polymorphism
- Default implementations are nice, too
Type classes
- Big part of standard library and reference manual
- Temptation is high to go overboard in refining class hierarchy