[bitc-dev] Retrospective: The Issues with Type Classes

Florian Weimer fw at deneb.enyo.de
Wed Apr 11 23:02:14 PDT 2012

* Jeremy Shaw:

> Ugly plumbing is one thing. But the problem here is that you get a
> compile time error that can *only* be fixed by modifying one of those
> libraries so that it no longer defines the conflicting orphan
> instance.

It seems to me that you can run into that only if you rely on an
orphan instance yourself.  As a result, I'm not sure if it qualifies
as a strange action-at-a-distance, although I agree it's pretty bad.
But I still think it's not different in a major way from any other
unnecessary type incompatibility.

> There is no way to hide the conflicting instances when
> importing a module. (That is not an oversight, but a fundamental
> design issue). In an open-source world, modifying the library is
> viable option.

Ahem, this is pretty much specific to Java.  Everybody else frowns
upon dependencies on patched libraries (although it does happen

Source code availability is not a factor, either---I'm pretty sure
patching other people's code to get your job done predates the concept
of source code. 8-)

More information about the bitc-dev mailing list