What I said is not true since overlapping instances are not that much decidable.

Btw, in previous versions of GHC this worked well, but now I suppose order does not suffices to define instances overlapping

How could I compile such an example, assuming that I want to use the instance C String for Strings only and the more general instance for the rest?

class C a where
    c :: a

instance C Char where
    c = 'a'
    
instance C a => C [a] where
    c = [c :: a,c :: a]
    
instance C String where
    c = "a"

cc = c :: String

Sorry for the newbie question.
hugo