It seems to me that language with good support of polymorphism and type classes (like Haskell) supersedes OO: everything that can be done in obect-oriented fashion can be done using typeclasses with the same or greater ease. I'm not sure whether my view is right, but it poses a question: Is it true that rich dependent typesystem can provide no less power than typeclasses do?
Igor