New semantics for overlapping instances and instances of abstract synonym types
Under the old semantics it was possible to define an abstract type
A (:== Int), and implement
toInt A where toInt i = i. Under the new semantics this is not possible any more.
This is a very useful feature when a newtype is not a good option because it would lead to (un)casts everywhere in the code (even if they are just syntactical). Is there a way to get this working with the new overlapping detection algorithm?