Greetings.
 
What happens if a type is made an instance of a typeclass in two different modules with different implementations? In static linking scenarios it will be caught by the compiler. I don't know whether we can do dynamic loading in Haskell, but it seems there will be inconsistencies in that case. Even in static linking when an object is serialized over the wire where a different implementation of a typeclass exists things will go wild. What's Haskell's approach to versioning?
 
Thanks