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?
Edited by Camil Staps