Orphan rules

That's what Haskell does. The problem is that you can have crate A and crate B that were totally interdependent but provide a conflicting implementation for some random type in another crate, and then crate C can't link to both A and B. That's really annoying when it happens because there's no way to work around it short of rewriting one of the libraries, and it's why Haskell provides orphan instance warnings.

2 Likes