OOP vs Haskell type classes
haskell.org