you are dealing with abstract types and interfaces and (2) it's easy to define and implement a type class that they have a habit of being used everywhere, even when there's no need.\\n\\nFor me, the biggest problem is that type classes form a global namespace. If someone implements a type class for a type, then no one else can provide a different implementation for that type, unless you're being clever/lucky with the imported modules. With parametric modules there is no global namespace. You can define thre