"No instance available" after adding another, similar, instance
The following example yields the error "c1" no instance available of type (T V) V
. When the instance c1 (T U) V
is removed, it compiles fine.
It's not entirely clear to me whether this is something that will be allowed under the new semantics, but is not implemented yet, or whether it is something that will not be allowed. However, in any case the error message could be clearer: if you add an instance, you don't expect there to be less instances available.
:: T a = T a
:: U = U
:: V = V
class c1 a b :: a b -> ()
class c2 a :: a
instance c2 V where c2 = V
instance c1 (T a) a | c2 a where c1 a b = ()
instance c1 (T U) V where c1 _ _ = ()
Start = c1 (T V) V
cc @smichels